1. 운영체제 개요
운영체제(Operating System, OS)
- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 기술
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
한 서버(컴퓨터)에 여러 사용자(프로그램)가 동시에 접속할 때 마치 혼자 서버를 사용하는 것 같은 환상 - 운영체제가 처리
- 컴퓨터 시스템의 자원(CPU, 메모리 등)을 효율적으로 관리
Resource Sharing - 실행중인 프로그램들에게 짧은 시간 CPU를 번갈아 할당, 한정된 메모리 공간 적절히 분배 → 효율성, 형평성
컴퓨터 시스템의 구조
컴퓨터 내부: CPU, 메모리
입출력(I/O) 디바이스: 디스크, 키보드, 프린터, 모니터
커널: 운영체제의 핵심 부분
메모리 - CPU의 작업 공간(CPU에서 매 clock 마다 메모리의 기계어를 읽어 연산 수행)
외부 장치 직접 접근 불가, I/O 컨트롤러에 요청
운영체제의 기능
- CPU 스케줄링: 어떤 프로그램에게 CPU 사용권을 줄지 결정
- 메모리 관리: 한정된 메모리를 어떻게 쪼개어 쓸지 결정
- 디스크 스케줄링: 디스크에 들어온 여러 요청을 어떤 순서로 처리할지 결정 = 엘리베이터 스케줄링
- 인터럽트, 캐싱: 빠른 CPU와 느린 I/O 장치간 속도차 극복
Interactive Application: CPU와 I/O 번갈아 사용
Scientific Application: I/O 작업 없이 CPU만 오래 사용
CPU 스케줄링
- FCFS (First-Come First-Served)
- 먼저 도착한 순서대로 프로세스 처리
- 도착 순서에 따라 대기 시간의 variation 커짐
- SJF (Shortest-Job-First)
- CPU 사용시간이 가장 짧은 프로세스를 제일 먼저 스케줄
- minimun average waiting time 보장
- Starvation(기아 현상) 발생 - 형평성 문제
- Round Robin (RR)
- 각 프로세스 동일 크기의 CPU 할당시간을 가지고 할당 시간이 끝나면 인터럽트 발생하여 CPU 빼앗김
- 대기시간이 프로세스의 CPU 사용시간에 비례 - 형평성
- 최대 대기시간: (n-1) * 할당시간
메모리 관리
파일시스템에서 프로그램 실행 → 각 프로세스 가상 메모리 생성 → 필요한 부분만 메모리에 올림 → 메모리 가득 차면 스왑영역에 저장
컴퓨터 꺼지면 파일시스템은 살아 있지만 메모리는 자동적으로 사라짐
스왑영역도 비휘발성이지만 프로세스가 종료되었기 때문에 의미 없는 정보
- LRU: 가장 오래 전에 참조한 페이지 삭제
- LFU: 참조 횟수가 가장 적은 페이지 삭제
디스크 스케줄링
디스크 접근 시간 = 탐색 시간 + 회전 지연 + 전송 시간
디스크 헤드의 이동 최소화(탐색 시간 최소화)
- FCFS (First-Come First-Served)
- SSTF (Shortest Seek Time First)
- 현재 위치를 기준으로 가장 가까운 곳으로 이동
- Starvation - 형평성 문제
- SCAN
- 헤드가 디스크의 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리 = 엘리베이터 스케줄링
저장장치 계층구조와 캐싱
CPU - Registers - Cache Memory - Main Memory - Disk
속도 차이를 완충하기 위해 계층구조 이용
캐싱: 빠른 저장 공간에 정보를 복사해 놓아서 디스크까지 내려가지 않고 재사용 가능
플래시메모리
비휘발성, 전력 소모 적음, 물리적인 충격에 강함, 작은 크기, 가벼움
→ 모바일 장치에서 쓰기 좋은 특징
→ 대용량 시스템에서 SSD라는 이름으로 하드디스크 대체 시도
한계: 쓰기 횟수 제한이 있음, 오랜 시간 지나면 데이터 변질 가능성 있음
운영체제의 종류
서버용, PC용, 스마트디바이스용 운영체제
공개 소프트웨어 (Open Source Software): Linux, Android