OS 공룡책과 패스트캠퍼스 강의, 이화여대 반효경 교수의 KOCW 강의를 정리하였다.
http://www.kocw.net/home/search/kemView.do?kemId=1046323
운영체제
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각
www.kocw.net
- OS 구조
- OS는 사용자 인터페이스를 Shell, API를 통해서 제공함
- system call: 운영체제가 제공하는 시스템 호출 인터페이스. 운영체제 각 기능을 사용할 수 있도록 시스템 콜이라는 명령, 함수 사용함. 시스템콜은 커널모드로만 실행됨. 커널모드로 실행하려면 반드시 시스템콜을 사용해야함.
- CPU protection Rings → 사용자모드, 커널모드
- OS는 사용자 인터페이스를 Shell, API를 통해서 제공함
- OS의 운용 기법, 프로세스를 스케쥴링하는 것
- 배치처리(batch processing): 프로그램 여러개를 순차적 처리 → 동시성, 다중사용자 문제
- 시분할 시스템: 다중 사용자 지원을 위해 컴퓨터 응답시간을 최소화하는 시스템. 프로세스를 번갈아가면서 실행
- 멀티태스킹: 단일CPU에서 여러 응용 프로그램이 동시에 실행되는 것 처럼 보이도록 하는 시스템
- 멀티프로세싱: (여러 CPU에서) 하나의 응용프로그램을 병렬로 실행해서 실행속도를 높이는 기법
- 멀티프로세싱: (여러 CPU에서) 하나의 응용프로그램을 병렬로 실행해서 실행속도를 높이는 기법
- 멀티 프로그래밍: 최대한 CPU를 많이 활용하도록 하는 시스템. 파일을 읽는다던가 프린트를 한다던가 하는 사이에 다른 프로세스를 처리함.
- 스케쥴링 알고리즘, 프로세스 상태, 프로세스 상태 기반 스케쥴링 알고리즘
- 스케쥴링 알고리즘의 종류 - 목적: 시분할 시스템, 멀티 프로그래밍을 위해서 운영체제가 프로세스를 프로세서에 할당 하는 것을 Dispatch라고 함.
- 운영체제가 ready queue에 있는 프로세스들 중에서 어떤 프로세스를 dispatch할지를 정하는 알고리즘이 프로세스 스케쥴링이다.
- 스케쥴링 기법에 따라서 정적-동적, 비선점형-선점형 스케쥴링인지 구분할 수 있음운영체제가 강제로 프로세스의 사용권을 통제하는지 안하는지에 따라 Preemptive, non-preemptive 방식으로 나뉨.
- 비선점 스케쥴링은 프로세스가 스스로 다음 프로세스에게 자리를 넘겨줌.
- 선점 스케쥴링은 CPU에 프로세스가 할당되어 있을 때도 운영체제가 개입해서 다른 프로세스에게 CPU를 할당할 수 있음.
- Scheduling policy
- FIFO(FCFS) 스케쥴링: 수행시간이 큰 프로세스가 들어오면 그 뒤에 들어온 프로세스들이 불필요하게 오랜 시간을 기다리게 되는 convoy effect 효과가 발생함. 비선점형 스케쥴링 방식이다.
- SJF 스케쥴링: 프로세스 처리 시간이 짧은 JOB부터 실행하는 방식. FCFS에서 발생하는 콘보이 효과를 해결할 수 있음. 버스트 시간이 큰 프로세스는 계쏙 뒤로 밀려나는 starvation이 발생함. 비선점 스케쥴링
- SRF 스케쥴링: 프로세스의 남은 수행 시간이 짧은 순서에 따라 프로세서에 할당함. SJF의 starvation 문제가 해결됨.운영체제가 개입해서 프로세스순서를 바꾸는 선점 스케쥴링.
- Priority-based 스케쥴링: 우선순위 순으로 실행
- SRF의 경우 남은 수행시간을 기준으로 우선순위를 부여한다고 볼수 있음
- Round-Robin 스케쥴링(RR 스케쥴링): 시분할 기반 시스템. 반응성이 좋음 일정 시간 할당량(Time quantum) 단위로 여러 프로세스를 번갈아가며 프로세서에 할당함. 우선순위 스케쥴링과 결합해서 프로세스의 시간 할당량을 조절하는 방식으로 활용함. 시간 할당량에 따라 운영체제가 계속 개입하는 선점스케쥴링 방식임
- FIFO(FCFS) 스케쥴링: 수행시간이 큰 프로세스가 들어오면 그 뒤에 들어온 프로세스들이 불필요하게 오랜 시간을 기다리게 되는 convoy effect 효과가 발생함. 비선점형 스케쥴링 방식이다.
- 스케쥴링 기법에 따른 분류
- 정적, 동적 스케쥴링: 우선순위 부여를 정적으로 혹은 동적으로(시스템이 알아서) 하게 할지
- 비선점형, 선점형 스케쥴링: 선점형 스케쥴링의 경우 하나의 프로세스가 다른 프로세스 대신에 프로세서를 차지할 수 있음. 선점형 스케쥴링에서 인터럽트가 일어날 수 있음.
- 정적, 동적 스케쥴링: 우선순위 부여를 정적으로 혹은 동적으로(시스템이 알아서) 하게 할지
- 인터럽트: 프로그램 실행 시 내부, 외부적으로 예외상황이 발생해서 처리가 필요할 경우에 CPU에 알려서 이를 처리하는 기술. 내부인터럽트(소프트웨어), 외부인터럽트(하드웨어)로 구분
- 인터럽트가 필요한 케이스
- 선점형 스케쥴러 구현시 필요. running 중에 다른 프로세스로 교체하기위해. 기존 프로세스 중단. 이를 위해 스케쥴러 코드가 실행되서 현 프로세스 실행을 중지시킴.
- IO device와의 커뮤니케이션이 필요할때 사용. block state → ready state
- 예외상황(하드웨어, divided by zero 연산시 프로세스 중지,에러표기가 필요함
- 선점형 스케쥴러 구현시 필요. running 중에 다른 프로세스로 교체하기위해. 기존 프로세스 중단. 이를 위해 스케쥴러 코드가 실행되서 현 프로세스 실행을 중지시킴.
- 주요 인터럽트 - divided by zero interrupt, 타이머 인터럽트, 입출력 인터럽트.
- 시스템콜 인터럽트: 시스템콜 실행을 위해서는 강제로 코드에 인터럽트 명령을 넣어서 CPU에 실행시켜야함.
- 인터럽트 발생시 IDT 확인, 미리 정의되어있는 시스템콜 인터럽트 번호에 해당되는 함수 실행
- IDT: interrupt descriptor table. 인터럽트 이벤트가 번호와 실행코드로 정의되어있고 매핑되어있는 테이블.
- 선점형 스케쥴러는 수시로 타이머 인터럽트를 발생시켜서 현재 프로세스를 다른 프로세스로 바꿔준다.
- 인터럽트가 필요한 케이스
- 배치처리(batch processing): 프로그램 여러개를 순차적 처리 → 동시성, 다중사용자 문제
'OS' 카테고리의 다른 글
3장. 컴퓨터 시스템의 동작 원리 (0) | 2022.09.10 |
---|---|
[OS] 가상메모리 개념 정리 (0) | 2020.11.16 |
[OS] 프로세스, 쓰레드 개념 정리 (0) | 2020.11.16 |
운영체제 주요 개념 키워드(공룡책 챕터 기준으로 구조화) (0) | 2020.11.16 |