[개발일지]/필기

Introduction to Operating Systems

broship 2021. 7. 21. 08:21

운영체제

- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프투웨어와 하드웨어를 연결하는 소프트웨어 계층

- 좁은 의미로는 커널이라고 함

- 넒은 의미로는 커널뿐 아니라 주변 시스템 유틸리티까지 포함

 

목적

- 하드웨어를 효율적으로 관리

자원: 프로세서, 기억장치, 입출력 장치 등

사용자간 형평성 있는 자원 분배 및 주어진 자원으로 최대한의 성능을 내는 것이 목표

- 컴퓨터 시스템을 효율적으로 관리(소프트웨어)

- 여러 사용자가 하나의 컴퓨터를 사용해도 각자 다른 컴퓨터를 사용하는 듯한 느낌을 들게해줌

 

 

운영체제의 분류

- 동시 작업 가능 여부

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