운영체제 구조
CPU Protection Rings(Intel CPU) - 중요한 용어는 아니나 2가지 모드가 있다는 것을 알자.
CPU도 권한 모드를 갖고 있다.
- 사용자 모드(user mode, Application이 사용) : Rings 3, 일반적인 명령어 수행
- 커널 모드(kernel mode, OS가 사용) : Rings 0, 특별한 권한 명령어(별도의 명령어가 구분되어있음)실행과 원하는 작업
수행을 위한 자원 접근을 가능케 하는 모드
- 대부분 Rings 3, 0 사용
어떤 명령을 실행할 때마다 CPU가 아무것이나 실행하는 것이 아니라 그때마다 현재 명령을 실행하고 있는 모드를
확인해서 진행한다.
* 사용자 모드에서 특권 명령어를 실행하려고 하면 CPU가 실행을 안 한다.
* 특권 명령어는 OS, Kernel 모드가 되어야 쓸 수 있다.
응용 프로그램이 OS에 요청을 해야 하면 API를 통해 시스템 콜을 호출하고, 그 명령은
실제로는 OS로 들어가서 커널 모드에서 실행이 된다.
Kernel??
- OS본연의 핵심 소프트웨어
Shell??
- OS, Kernel의 바깥 층
시스템 콜은 커널 모드로 실행
시스템 콜을 통과하는 순간 그 명령은 커널 모드로 실행
시스템 콜은 C언어로 되어있음
- 커널 모드에서만 실행 가능한 기능들이 있음
- 커널 모드로 실행하려면, 반드시 시스템 콜을 사용해야 함
- 시스템 콜은 OS가 제공
- 이런 기능들이 잘 구현되도록 OS에서 시스템 콜을 동작해야 한다.
사용자 모드와 커널 모드 (원리 : CPU Protection Rings이 있다.)
- 이런 시스템 덕분에 App이 전체 컴퓨터 시스템을 해치지 못함!
- 주민등록등본을 꼭 동사무소나 민원 24에서 특별한 신청서를 써야만 발급 되듯이!
동사무소 직원이 특별한 권한을 가지고 등본 출력 명령을 실행!
운영 체제는 시스템 콜을 제공
프로그래밍 언어별로 운영체제 기능을 활용하기 위해, 시스템 콜을 기반으로 API 제공
응용 프로그램이 실행되서, OS기능이 필요한 API를 호출하면 , 시스템 콜이 호출되서,
커널 모드로 변경되어 OS 내부에서 해당 명령이 실행되고, 다시 응용 프로그램을 돌아간다.
#프로세스 = 응용 프로그램
#스케쥴링 = 여러 가지 응용 프로그램을 CPU에 배치하는 방법
#배치 처리 시스템
자동으로 다음 응용 프로그램이 이어서 실행될 수 있도록 하는 시스템.
컴퓨터 프로그램 실행 요청 순서에 따라 순차적으로 프로그램을 실행하는 방식
한 번에 등록된 여러 프로그램을 순차적으로 실행 가능
맥락상 Queue 와 비슷
#자료 구조 - 큐(Queue)
1번 프로그램이 먼저 추출된 이유?? 맨 처음 들어온 1번 프로그램이기 때문
First In - First Out
#배치 처리 시스템, 시 분할 시스템/멀티 프로그래밍
배치 처리 시스템의 사용이 줄고 시 분할 시스템/멀티 프로그래밍을 사용하게 된 이유
- 여러 프로그램을 순차적으로 실행시킬 수 있도록 해주세요!
→ 어떤 프로그램은 실행이 너무 시간이 많이 걸려서 다른 프로그램이 실행하는데
시간을 많이 기다려야 한다.
→ 음악을 들으면서 문서 작성을 하고 싶다! (동시에 여러 응용 프로그램 실행 불가)
→ 여러 사용자가 동시에 하나의 컴퓨터를 쓰려면 어떻게 해야 하나요??
>> 컴퓨터 응답 시간에 영향을 받음
→ 응답 시간이 매우 느림!(응용 프로그램 사이에 응용 프로그램이 낄 수 없어서)
이러한 문제점 때문에 시 분할 시스템/멀티 프로그래밍이 등장
# 시 분할 시스템
다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템
응용 프로그램이 CPU를 점유하는 시간을 잘게 쪼개어 실행될 수 있도록 하는 시스템
# 멀티 태스킹
단일 CPU에서, 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템
음악을 들으며, 문서 작성을 한다.
사람이 인지하지 못할 만큼 !
# 실제 멀티 태스킹
1000 밀리초(ms) = 1초
10~20ms 단위로도 실행 응용 프로그램이 바뀌더라
사용자에게는 동시에 실행되는 것처럼 보임
#멀티 프로세싱
멀티 태스킹 - 단일 CPU
멀티 프로세싱 - 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행속도를 극대화시키는 시스템
#멀티 프로그래밍
목적 - CPU를 일정 시간에 최대한 많이 활용하도록 하는 시스템
- 시간 대비 CPU 활용도를 높이기 위함
- 응용 프로그램을 짧은 시간 안에 실행 완료를 시킬 수 있음.
#응용 프로그램은 온전히 CPU를 쓰기 보다, 다른 작업을 중간에 필요로 하는 경우가 많습니다.
즉 응용 프로그램이 실행되다가 다른 작업을 하게 되는 경우가 있음! 그럴 경우엔 아무런 작업을 하지 못하고 실행만 되고 있음.
ex) 응용 프로그램이 실행되다가 파일을 읽는다. (저장 매체 - CPU 실행 시간으로 보면 느린 장치)
파일을 읽는 동안엔 응용 프로그램이 그 시간 동안은 아무런 작업을 하지 못함
ex) 응용 프로그램이 실행되다가 프린트를 한다.