1. Operation System
- CPU + RAM
- 연산 + 저장(데이터)
OS는 CPU와 RAM으로 구성되어있다.
저장되어있는 데이터로 연산하는 것이다.
2. 문제
(1) 저장 공간이 몇십억개이기 때문에 사람이 직접 저장된 데이터를 찾기가 힘들다.
도서관에서 책을 찾는데 책장이 몇십억개라면 책을 찾기가 어렵다.
=> OS는 도서관 사서의 역할을 해준다.
필요한 책을 알아서 찾아주는 것이다.
(2) 연산(CPU가 하니까 굉장히 빠름)과 저장(비교적 느림)에는 시간차가 발생한다.
연산을 하려고 하니까 데이터가 안와!
이렇게 발생하는 시간차 때문에 연산장치가 멍 때리는 일이 발생한다.
=> 프로세스 스케줄링 (스레드로!)
멍때리는 시간 동안 분신(스레드)을 하나 만들어서 일을 시키는 것이다.
여러 개의 스레드가 비동기식(일에 순서 X)으로 일을 한다.
프로세스 스케줄링 : 프로세스가 생성되어 실행될 때(= 프로그램이 실행될 때)
필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업이다.
이때 대기 시간은 최소화(멍 때리지 않게)하고 최대한 공평하게 처리하는 것을 목적으로 한다.
(3) 저장된 데이터를 여러 스레드가 공유해서 사용할 수 있다.
두 명의 사서가 같은 책을 찾는데 누구에게 우선순위를 둬야 하지?
=> OS가 알고리즘(RR, FIFO, LRU 프로세스 우선순위 스케줄링)을 선택하여 자원을 공평하게 배분한다.
(4) RAM이 모자랄 수 있다.
램이 모자라면 더 이상 프로세스를 메모리에 올리지 못한다.
내 램이 1GB라고 할 때 롤이 실행되면 700MB가 할당된다.
실제로 롤은 10GB인데 10GB가 항상 램에 올라올 수 없기 때문에
현재 딱 필요한 것만 램에 할당한다.
내가 한글 2020도 실행하려고 하는데 400MB가 필요하다.
이때 램이 모자라게 되면 한글이 실행되지 않는다.
=> OS가 가상 메모리를 제공해준다.
하드디스크를 메모리라고 CPU에게 속이는 작업이다.
한글에서 메모리에 떠있는 데이터를 사용하다가
필요한 데이터가 메모리에 없으면 OS가 하드디스크로 가서 필요한 데이터를 퍼오고
기존에 떠있는 데이터중 안 쓰는 데이터를 소멸시키며 SWAP이 일어난다.
SWAP(알고리즘 필요)하는 과정 때문에 메모리에 다 떠있는 프로그램보다는 느리다.
문제점들이 이것만 있을까? 훨씬 많다.
OS의 이러한 기능이 없으면 인간이 직접 컴퓨터를 관리하기가 힘들다.
이런 운영체제가 들고 있는 핵심적인 기능을 '커널'이라고 한다.
커널 : 메모리에 상주하는 운영체제의 핵심 부분
운영체제(사서)가 컴퓨터 하드웨어(도서관)를 관리하는 것이다.
UNIX와 같은 대형 컴퓨터가 가진 커널을 소형 컴퓨터가 가지고 있을 필요는 없다.
이를 위해 Unix에서 파생되어 나온 게 Linux이다. -> 개인용 컴퓨터(퍼스널 컴퓨터)
유닉스와 리눅스가 가진 커널은 다르다.
우리 운영체제는 이런 기능이 필요한데?
라고 하며 커널 때문이 아닌 특정 프로그램 때문에 계열이
Redhat과 Debian으로 나뉘게 된다.
Redhat / Debian
핵심 뿌리는 같으니까 커널을 다루는 명령어는 같겠지만
커널이 다른 게 아닌 어떠한 기능 때문에 두 개의 명령어가 다른 것이다.
레드햇 계열에 OS가 있고, 데비앙 계열에 OS가 있는데
데비앙 계열의 OS 중 하나가 우분투이다.
AWS 4강 - AWS 회원가입
AWS 5강 - EC2서버 임대하기
AWS 6강 - EC2서버 Windows에서 접속하기
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9