운영체제(Operating System)란?
- 컴퓨터 하드웨어 바로 위에 설치되어 있는 하드웨어와 사용자 또는 다른 소프트웨어를 연결하는 소프트웨어 계층이다.
- 좁은 의미의 운영체제(커널) : 운영체제의 핵심 부분, 메모리에 상주한다.
- 넓은 의미의 운영체제 : 커널 뿐만 아니라 각종 주변 시스템 유틸리티를 포함한다.
운영체제의 목적
- 컴퓨터를 편리하게 사용할 수 있는 환경을 제공
- 동시에 사용하는 사용자 / 프로그램들이 각각 독자적인 컴퓨터에서 수행되는 것 같은 환상을 제공한다.
- 하드웨어를 다루는 복잡한 부분을 운영체제가 대행한다.
- 컴퓨터 시스템의 자원을 효율적으로 관리
- 효율성 : 주어진 자원으로 최대한의 성능을 내는 것
- 형평성 : 특정 사용자 / 프로그램의 지나친 불이익이 발생하지 않도록 하는 것
컴퓨터 시스템의 구조
운영체제의 기능
- I/O 장치의 작업이 끝나면 인터럽트를 발생시켜서 CPU에게 알려준다.
- CPU는 작업이 끝날 때마다 인터럽트가 있는지 확인한다.
- 만약 인터럽트가 들어왔다면 CPU의 제어권은 운영체제에게 넘어간다.
- 운영체제는 인터럽트가 발생한 이유를 참고해서 CPU 스케줄링에 관여한다.
프로세스의 상태
- 하드웨어 장치는 각자 정해놓은 스케줄링 방식으로 프로세스를 큐에 추가하고 큐에 추가된 순서대로 실행한다.
- Interactive Application : 사람과 인터랙션하는 프로그램, CPU 사용과 I/O장치 사용을 반복한다.
- Scientific Application : 사람과의 인터랙션이 적은 프로그램, CPU만 오래 쓰고 IO는 적게 사용한다.
CPU 스케줄링
- 프로세스가 큐에서 대기한다.
- 대부분의 프로세스가 CPU를 사용하고 I/O 장치 사용을 반복한다.
FSCS(First-Come First-Served)
- 프로세스가 도착한 순서대로 실행한다.
- 형평성은 좋지만 효율성은 매우 안좋다.
SJF(Shortest-Job-First)
- CPU를 짧게 쓰는 프로세스를 먼저 실행한다.
- 효율성이 매우 좋다.
- Starvation(기아 현상)이 발생할 수 있다.
- 사용 시간이 긴 프로세스는 영원히 CPU를 사용하지 못할 수도 있다. (형평성이 좋지 않다.)
RR(Round Robin)
- 현재 CPU 스케줄링에서 가장 많이 사용하는 방식이다.
- 각 프로세스가 동일한 CPU 할당 시간을 가진다.
- 할당 시간이 끝나면 프로세스는 CPU를 빼앗기고 CPU 큐의 맨 뒤로 줄을 선다.
- 이때 인터럽트를 발생시켜서 CPU를 빼앗을 수 있다.
- 대기시간이 프로세스의 CPU 사용시간에 비례한다. (형평성이 높다.)
- CPU를 기다리는 시간이 (n-1) * 할당시간 을 넘어가지 않는다.
메모리 관리
- 파일시스템에 있는 실행 파일이 프로세스로 변경되고 가상 메모리 공간를 만든다.
- 만들어진 가상 메모리에서 당장 필요한 페이지만 메모리에 올린다.
- 이미 메모리에 올려져 있는 페이지는 다시 올리지 않고 필요할 때 바로 사용하면 된다.
- 메모리의 용량이 전부 다 찼는데 실행해야 되는 페이지가 생긴다면 우선 순위가 낮은 페이지가 메모리에서 쫓겨난다.
- 메모리에서 쫓겨난 페이지는 스왑 영역에서 보관한다.
- 스왑 영역을 메모리의 연장 공간이라고 봐도 된다.
- 스왑 영역은 디스크이기 때문에 비휘발성이지만 메모리는 휘발성이기 때문에 의미가 없다.
LRU vs LFU
- LRU : 가장 오래 전에 참조된 페이지를 삭제한다.
- 단점 : 가장 오래 전에 참조해도 최근까지 많이 사용할 수도 있는 페이지를 삭제한다.
- LFU : 참조 횟수가 적은 페이지를 삭제한다.
- 단점 : 오래 전에 참조하고 최근에는 참조하지 않아도 삭제를 하지 않는다.
디스크 스케줄링
- 디스크의 트랙은 가장 바깥쪽이 1번 트랙이고 안쪽으로 갈수록 트랙번호가 커진다.
- 디스크 헤드가 요청받은 트랙으로 이동해서 값을 읽거나 쓴다.
- 디스크의 접근 시간 중 탐색 시간이 가장 많은 부분을 차지한다.
- 디스크의 탐색 시간을 적게 만드는게 디스크 스케줄링의 목표다.
디스크 접근 시간
- 탐색 시간(Seek time)
- 헤드를 해당 트랙(실린더)으로 움직이는데 걸리는 시간
- 회전 지연(Rotational latency)
- 헤드가 원하는 섹터에 도달하기까지 걸리는 시간
- 전송 시간(Transfer time)
- 실제 데이터의 전송 시간
- 다른 디스크 접근 시간에 비해 훨씬 짧은 시간이 걸린다.
FSFS(First-Come First-Served)
- 먼저 들어온 요청을 먼저 처리한다.
- 굉장히 비효율적이다.
SSTF(Shortest Seek Time First)
- 탐색 시간(Seek Time)이 가장 짧은 트랙으로 이동한다.
- Starvation(기아 현상)이 발생할 수 있다.
- 탐색 시간이 긴 요청은 영원히 응답을 받지 못할 수도 있다. (형평성이 좋지 않다.)
SCAN
- 헤드가 디스크의 한쪽 끝에서 다른 한쪽 끝으로 이동하며 가는 길에 있는 모든 요청을 처리한다.
- 다른 한쪽 끝에 도달하면 역방향으로 이동하며 가는 길에 있는 모든 요청을 처리한다.
- 효율성과 형평성이 모두 좋다.
저장장치 계층구조와 캐싱
- 위의 6가지 계층을 거쳐가며 데이터를 저장하거나 읽는다.
- 위로 갈수록 속도가 빠르고 비싸다.
- primary(Executable)
- Secondary
- CPU가 직접 접근할 수 없다.
- 비휘발성이다.
Caching
- 중간 계층에서 데이터를 보관해서 계층 간의 속도 차이를 완충시킬 수 있다.
- 메모리 관리처럼 공간이 한정되어 있기 때문에 앞으로 여러번 사용할 데이터를 잘 알아내는 게 성능에 큰 영향을 준다.
플래시메모리
- 반도체 장치 (하드디스크 = 마그네틱)
- NAND형(스토리지), NOR형(임베디드 코드저장용)
플래시메모리의 특징
- 비휘발성
- 적은 전력 소모
- 물리적인 충격에 강함
- 빠른 속도
- 작은 크기
- 가벼운 무게
- 쓰기 횟수 제약
플래시메모리의 사용 형태
- 휴대폰, PDA 같이 임베디드 시스템 구성용
- SD카드, SSD에도 사용된다.
이 글은 반효경 교수님의 kocw 운영체제 강의를 보고 정리했습니다.
👍 잘 보고가요