1. 운영체제(Operating system) 정의
- 시스템(System): 기반이나 틀이되는 하드웨어를 지칭. 소프트웨어인 운영체제가 시스템으로 쓰이는 것은, 하드웨어가 OS와 같이 동작이 되어야만 사용자가 쓸 수 있는 하나의 "컴퓨터 시스템"이 되기 때문임
- 하드웨어 바로 윗단에 설치되는 소프트웨어
- 컴퓨터를 동작시키기 위해 필요한 소프트웨어
- 메모리에 항상 상주하며, 전원을 켬과 동시에 실행되는 운영체제를 커널(Kernel)이라 함
- 시스템을 위한 유틸리티(copy)는 넓은 의미의 운영체제라 함
2. 운영체제 기능
- 하드웨어와 사용자 사이에 존재하므로, "하드웨어를 위한 역할"과 "사용자를 위한 역할" 두 가지로 나눌 수 있다.
1) 시스템 내의 자원을 관리(resource manager)
- 자원 : CPU,메모리, 하드디스크(하드웨어) + 소프트웨어
2) 사용자에게 편리한 인터페이스 제공 = User와 프로그램에게 각각 독자적으로 컴퓨터를 사용하는 것 같은 환상을 제공하는 것 즉, "추상화된 컴퓨터"를 제공
ex) 사용자는 파일 디스크의 구조에 대해 잘 알지 못하지만, interface를 통해 파일을 쉽게 저장할 수 있다.
3) 보안 및 보호 기능
- 여러 프로그램이 하나의 컴퓨터에서 실행되면 이에 대한 보안이 필요
3. 운영체제의 분류
1) 동시 작업 유무( Single tasking vs Multi tasking) - "한번에 실행시킬 수 있는 프로그램의 개수"
-
Single tasking: 한 번에 하나의 프로그램만 실행시킬 수 있음. 초기 운영체제
-
Multi tasking : 한 번에 여러개 프로그램을 실행시킬 수 있음. 단, 자원을 공유해야 함
- 시분할 시스템(Time sharing system): CPU 작업시간을 여러 프로그램이 조금씩 나누는 시스템
- 다중 프로그래밍 시스템(Multi-programming system) : 메모리를 분할하여 동시에 여러 프로그램을 올려놓고 처리하는 시스템
- 대화형 시스템(Interactive system) : 각 프로그램에 대한 결과를 곧바로 화면에 보여줌
=> 위 4개는 모두 "여러 프로그램이 하나의 PC에 동시에 실행"됨.
* 참고) Multi-processor system: 하나의 컴퓨터 안에 여러 CPU가 설치된 경우.
2) 다중 사용자 운영 여부
-
단일 사용자용 운영체제 : 한 번에 한 명의 User만 사용 가능
-
다중 사용자용 운영체제 : 한 번에 여러 사용자가 동시 접속 가능
3) 작업 처리 방식(Batch processing vs time sharing)
-
Batch processing(일괄 처리) : 요청된 작업을 모아 한번에 처리. 하나의 작업이 끝나기 전까지는 다른 작업을 할 수 없다는 것이 특징.응답 시간이 단점. ex) 펀치 카드 처리 시스템
-
Time sharing system(시분할 시스템): CPU를 시간 단위로 분할해 사용하는 방식. 사용자 입장에서는 응답 시간이 짧으므로, 대화형 시스템의 특징을 가짐
4) 실시간 운영체제(Real-time system) : 정해진 시간 안에 특정 일이 반드시 처리됨을 "보장해야 하는 시스템"
-
Hard realtime( 경성 실시간 시스템 ) : 주어진 시간을 지키지 못할 경우 시스템 실패(System Fault)를 초래. ex) 로켓, 원자로 제어 시스템
-
Soft realtime( 연성 실시간 시스템 ) : 지키지 못할 경우 실패까지는 아니지만 손해를 요구함. 즉, 가치가 떨어짐. ex) 스트리밍 시스템
4. 운영체제의 예
-
Window : 개인 PC를 위한 OS 쉬운 인터페이스와 각종 기능이 있음
-
Unix : 전문적 목적의 컴퓨터 사용에 적합. 소프트웨어 이식성이 좋음
-
참고) 소프트웨어 이식성: SW를 다른 환경으로 이동할 수 있음
5. 운영체제의 자원 관리 방법(크게 4가지)
1) CPU 스케줄링 - " 어떤 프로그램에 CPU를 줄 것인가?"
- 정의 : 매 시점 어떤 프로세스에 CPU를 할당할 지 결정하는 일
- 목표 : CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익 받지 않게 함
- 종류 : FCFS(선입 선출): 먼저 온 것을 처리. 전체 시스템 입장에서 비효율
RR(라운드 로빈): CPU를 할당 받아 사용할 수 있는 시간이 제한됨. 큐 사용
Priority(우선순위): 대기중인 프로세스들에 우선순위를 부여해서 우선수위 별 할당
2) Memory 관리 - " 한정된 메모리를 어떻게 나누어 사용할 것인가?"
- 왜 필요한가: OS는 메모리의 어느 부분이 어떤 프로그램에 의해 사용되는 중인지 파악해야 함(주소를 통해 관리)
- 목표: 메모리가 필요할 때 할당하고, 필요하지 않을 때 회수한다. 이를 통해 전체 메모리 공간이 효율적으로 사용되어야 한다.
- 종류:
-
Fixed Partition(고정 분할)
- 메모리를 몇 개의 분할로 미리 나누어 관리. 각 분할에 하나의 프로그램 적재
- 분할 크기보다 큰 프로그램은 적재 불가능
- internal fragmentation 발생( 분할 내 남는 영역 )
-
Variavble partition(가변 분할)
- 매 시점 프로그램 크기에 맞게 메모리를 분할해서 사용
- 분할의 크기때문에 큰 프로그램의 실행이 제한되는 문제가 발생하지 않음( 고정 메모리 단점 개선)
- 하지만, "물리적 메모리 크기"보다 큰 프로그램 실행 불가
- External Fragmentation 발생(프로그램 할당은 안되었지만, 크기가 작아 프로그램을 올리지 못하는 영역)
-
Virtual memory(가상 메모리)
- 물리적 메모리보다 더 큰 프로그램 실행 가능(고정, 가변 메모리 단점 개선)
- 모든 프로그램은 자신만의 가상 메모리 주소를 가진다. OS는 Mapping하여 물리 주소로 변환시킨 후, 프로그램을 물리 메모리에 적재시킴
- 프로그램의 전체 크기가 아무리 커도, 전체가 항상 동시에 사용되는 것은 아니다. 그러므로 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 보조기억장치에 저장해두었다가 필요할 때 적재하는 방식을 취한다. 즉, 가상 메모리 공간을 page 단위로 나뉘어 물리적 메모리와 swap영역에 나뉘어 저장된다.
- 관련 용어
* Mapping : 가상 메모리의 주소를 물리적 메모리 주소로 변환하는 과정
* Swap area : 가상 메모리 관리를 위해 사용되는 디스크 영역. 즉, 한정된 메모리 공간을 여러 프로세스가 공유하기위해 비축된 디스크 영역
* Page : 가상 메모리를 일정한 크기로 나눈 블록.
* Paging : 가상 메모리를 page 단위로 나누는 기법
3) 입출력 관리 - " 각기 다른 입출력 장치와 PC간 어떻게 정보를 주고 받을 것인가?"
- Interrupt를 통해 관리가 이루어짐.
- Interrupt: 입출력 장치들이 (Controller를 통해 보내는) CPU 서비스가 필요할 때 보내는 신호. CPU는 인터럽트가 발생하면 하던 일을 멈추고, interrupt handling을 수행한다.
- Interrupt handling(인터럽트 처리루틴) : 인터럽트가 발생했을 때 수행해야 할 작업. 인터럽트 발생 시 OS는 해당되는 인터럽트 처리루틴을 찾아 일을 수행한다.
- Controller : 주변 장치에 대한 업무를 처리하고, CPU에 인터럽트를 발생시켜 보고하는 역할(주변장치 마다 가지고 있는 작은 CPU)
- 처리 과정 예(키보드 입력 관리) --- 외우기
: User으로부터 키보드 입력이 들어옴 => Controller가 Interrupt를 CPU에 보냄 => CPU는 현재 수행중인 작업의 상태를 저장 => 운영체제 내에 정의된 키보드 인터럽트 처리 루틴을 찾아감 => 해당 처리 루틴 수행하면서 인터럽트 완료 => 인터럽트가 발생하기 직전의 상태를 복구시켜서 중단되었던 작업을 재개
'전공 > 운영체제' 카테고리의 다른 글
[OS과제] SYS (0) | 2022.04.26 |
---|---|
[운영체제,OS] 전공 필기시험 정리 (0) | 2022.04.01 |
메모리 1 - 구조 / 종류 / 관리 / 정책 / 단편화 (0) | 2022.02.23 |
파일 시스템 (0) | 2021.12.14 |