[OS] 운영체제 개요
운영체제(OS, Operating System) 란?
- 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층
- 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결
- 컴퓨터의 복잡한 하드웨어(cpu, 메모리, 하드디스크 등)를 관리하면서 사용자에게 편리한 인터페이스를 제공
운영 체제의 목적
컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
- 여러 사용자/프로그램이 동시에 실행되더라도 혼자 돌아가는것 같은 환상(illusion)제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대신 해줌
컴퓨터 시스템의 자원을 효율적으로 관리
- CPU, 메모리, I/O 장치 등의 효율적 관리
- 주어진 자원을 최대한의 성능을 내도록함 -> 효율성
- 특정 사용자/프로그램의 지나친 불이익이 발생하지 않도록함 -> 형평성
컴퓨터 시스템의 구조
운영체제의 기능
- 컴퓨터를 키면 자동으로 메모리에 OS의 핵심인 커널(kernel)이 올라가고 끄기 전까지 메모리에서 실행됨
- 메모리에 OS를 제외한 나머지 공간을 프로그램들이 나눠 씀
프로세스의 상태
CPU 스케줄링
- 짧은 시간동안 여러 프로그램들에게 번갈아 할당됨
- 어떤 프로그램을 우선순위로 정할 것인가
- CPU 할당을 얼마나 줄 것 인가
FCFS(First-Come First-Served)
- CPU 큐에 들어온 순서대로 처리
- 프로세스들이 큐에서 기다리는 시간이 길어짐
- 먼저 들어온 프로세스의 CPU 사용시간에 따라서 기다리는 시간이 바뀜
SJF(Shortest-Job-First)
- CPU 큐에 있는 프로세스 중에서 CPU 사용시간이 가장 짧은 프로세스를 제일 먼저 스케줄
- SJF는 프로세스들이 큐에서 기다리는 시간을 최소화하는 방법
- 효율성은 좋지만 형평성에 문제가 생길 수 있음
- CPU를 길게쓰는 프로세스가 무한정 기다리는 상황이 발생할 수도 있음
라운드 로빈(RR, Round Robin)❗️
- 프로세스들의 CPU 사용시간과 상관없이 각 프로세스는 같은 CPU 할당시간을 가짐
- 할당시간이 끝나면 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고 CPU 큐의 제일 뒤로 이동
메모리 관리
- 디스크(파일시스템)에는 실행파일 형태로 프로그램들이 존재
- 프로그램을 실행시키면 프로세스가 생성
- 파일시스템 -> 비휘발성
-
프로세스은 가상 메모리를 만들고 필요한 부분(페이지)만 물리적 메모리에 올림
- 물리적 메모리에 필요 없는 부분은 디스크(스왑영역)에 적재
- 스왑영역 = 메모리의 연장공간
- 스왑영역 -> 휘발성
LRU vs LFU
- 메모리 관리 핵심 : 가까운 미래에 사용될 가능성이 적은 페이지를 제거
디스크 스케줄링 = 엘레베이터 스케줄링
- 디스크의 접근 시간중에 가장 많은 시간을 차지하는게 디스크 헤드의 이동 시간
- 디스크 효율적 관리 방법 = 디스크 헤드 이동시간 단축
- 데이터는 섹터(sector)에 저장
디스크 헤드 이동시간 = seek time
FCFS(First-Come First-Served)
SSTF(Shortest Seek Time First)
SCAN❗️
- 헤드가 디스크의 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리
- 다른 한쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동
- 엘리베이터 스케줄링
저장장치 계층구조와 캐싱(caching)
- Primary -> 휘발성, 컴퓨터 내부, CPU 접근 가능
- Secondary -> 비휘발성, I/O 장치, CPU 접근 불가능
플래시메모리
- 반도체장치
- 전하의 양으로 데이터를 기록
플래시메모리의 특징
- 비휘발성
- 전력소모가 적다
- 물리적 충격에 강하다
- 크기가 작고 가볍다
- 쓰기 횟수 제약이 있다(수명이 있다)
- 데이터 유실 가능성이 있음
- 시간이 지나면 전하가 빠져나가 1 -> 0으로 읽음
플래시메모리는 모바일 장치에 쓰기 좋음
플래시메모리의 사용 예
- 휴대폰, PDA 등 임베디드 시스템 구성용
- USB용 메모리 스틱
- 디지털카메라 등의 SD 카드
- 모바일 장치, 대용량 시스템에서 SSD(Solid State Drive)란 이름으로 하드디스크 대체 시도
운영체제의 종류
- 서버용, PC용, 스마트디바이스용 운영체제
- 공개 소프트웨어(Open Source Software)
- Linux, Android