운영체제
- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프투웨어와 하드웨어를 연결하는 소프트웨어 계층
- 좁은 의미로는 커널이라고 함
- 넒은 의미로는 커널뿐 아니라 주변 시스템 유틸리티까지 포함
목적
- 하드웨어를 효율적으로 관리
자원: 프로세서, 기억장치, 입출력 장치 등
사용자간 형평성 있는 자원 분배 및 주어진 자원으로 최대한의 성능을 내는 것이 목표
- 컴퓨터 시스템을 효율적으로 관리(소프트웨어)
- 여러 사용자가 하나의 컴퓨터를 사용해도 각자 다른 컴퓨터를 사용하는 듯한 느낌을 들게해줌
운영체제의 분류
- 동시 작업 가능 여부
1. 단일 작업: 한번의 하나의 작업만 처리, MS-DOS
2. 다중 작업: 동시에 두개 이상의 작업 처리, 리눅스, 윈도우
- 사용자 수
1. 단일 사용자: MS-DOS, 윈도우
2. 다중 사용자: 리눅스
- 처리방식
1. 일괄처리: 작업이 바로바로 처리되는 것이 아닌 작업 요청을 일정량 모아서 한꺼번에 처리, 작업이 완전히 종료될때 까지 기다려야함, 초기 punch card 시스템
2. 시분할: 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용, 여러 사용자가 사용해도 동시에 진행된다는 느낌을 받음
3. 실시간: 정해진 시간 안에 반드시 종료됨을 보장해주는 OS, 원자로/공장제어, 미사일 제어, 반도체 장비 생산 등에 사용(hard realtime system)
soft realtime system: 일반 프로그램에서도 어느정도 데드라인을 지켜야 하는 프로그램에 사용됨
- 현재는 다중작업, 다중사용자, 시분할 방식이 주로 사용됨
용어정리
multitasking: 여러 작업이 동시에 처리됨
multiprogramming: 여러 프로그램이 메모리에 올라가 있음을 강조
time sharing: CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조
multiprocess: 여러 프로그램이 동시에 실행됨(멀티테스킹이랑 비슷함)
multiprocessor: 하나의 컴퓨터에 CPU(processer)가 여러개 붙어 있음을 의미(일반적으론 하나만 달려있음)
운영체제의 예
1) 유닉스
- 대형 컴퓨터를 위해 만들어짐
- 코드 대부분이 C언어로 작성(유닉스를 만들기 위해 c언어가 만들어짐)
- 높은 이식성(어느 기기에서든 쉽게 사용 가능)
- 최소한의 커널 구조(OS를 돌리는데 최소한의 메모리만 사용)
- 복잡한 시스템에 맞게 확장 용이
- 소스 코드 공개(공짜, 개인이 수정 가능)
- 프로그램 개발에 용이
- 다양한 버전 System V, FreeBSD, SunOS, Solaris, Linux
2) 윈도우
- 처음 DOS는 단일 사용자를 위해 만들어짐, 최대 640KB 메모리만 지원
- 윈도우즈부터는 다중 작업용 GUI 기반 운영체제가 만들어짐
운영체제의 구조
1) CPU
- CPU 스케줄링: 어떤 프로그램에 CPU를 할당할까?
- 선착순 처리가 아닌 빨리 끝낼수 있는 프로그램에 먼저 할당
- 하나에 몰빵하기 보다는 줬다 뺏었다를 반복
- 하나의 CPU지만 여러 프로그램이 동시에 실행되고 있는듯한 느낌을 줌
2) memory
- 메모리 관리: 한정된 메모리를 어떻게 쪼개어 쓰지?
- 무조건 n/1이 아닌 특정 프로그램에 많이 할당했다가 또 다른 프로그램에 할당했다가
- 자주 사용되는 프로그램은 메모리에 올려놓고 자주 사용하지 않는건 disk에 보관
3) Dist
- 파일 관리: 디스크에 파일을 어떻게 보관하지?
- 엘리베이터를 생각하면됨, 디스크의 헤더들을 읽어가다가 지나가는 길에 새로운 요청이 헤더에 있으면 그게 나중에 요청이 들어온 것이라도 그걸 먼저 읽고 감
- 움직임을 최소화하면서 최대한 빠르게 읽는게 목적
4) I/O device
- 입출력 관리: 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지?
- CPU는 자기 할일을 하다가 I/O 디바이스가 인터럽트를 걸면 그때 해결을 해주는 식
'[개발일지] > 필기' 카테고리의 다른 글
Process Management (0) | 2021.08.12 |
---|---|
Process2 - 스레드 (0) | 2021.08.10 |
Process1 (0) | 2021.08.03 |
System Structure & Program Execution 2 (0) | 2021.07.28 |
System Structure & Program Execution 1 (0) | 2021.07.25 |