운영체제 분류와 컴퓨터 시스템 구조
지금 쓰는 운영체제는 다중 작업 & 다중 사용자 & 시분할 OS
- 컴퓨터에서 여러 작업을 동시에 수행하는 것을 의미하는 용어들
(1) Multitasking : 컴퓨터 안에서 여러 개 프로그램을 동시에 돌리는 것
(2) Multiprogramming : 메모리를 강조. 메모리에 여러 프로그램이 올라가 있는 것
(3) Time sharing : CPU를 강조. CPU 시간을 분할해서 나누어 쓴다
- Multiprocessor : 하나의 컴퓨터에 여러 CPU (processor)가 있음을 의미
컴퓨터 시스템이 어떻게 되는지, 그 위에서 프로그램들이 어떻게 돌아가는지
CPU
: 기계어를 연산한다
: register를 이용해 연산을 저장하고 처리
(1) PC (Program Counter) : 다음에 실행할 메모리의 주소를 가리키는 레지스터.
mode bit
: 사용자 프로그램에 의해 다른 프로그램과 OS에 피해 가지 않도록 제어하기 위한 보호장치
: CPU가 OS에 의해 실행되는지, 사용자 프로그램에 의해 실행되는지를 구분
(1) 사용자 모드 : 사용자 프로그램 수행. 제한된 기계어만을 수행 가능. 1
(2) 모니터 모드(=커널 모드, 시스템 모드) : OS 코드 수행. 뭐든 할 수 있다. 0
: mode bit = 0일 때만 특권 명령(보안을 해칠 수 있는 주요 명령어) 수행 가능
: Interrupt 또는 exception 발생 시 HW는 mode bitd을 0으로 바꾼다
(1) Exception : 권한 없는 명령어를 실행하려는 경우 등 예외 상황 처리.
(2) Interrupt : 매 순간 기계어를 읽고 실행할 때 Interrupt line을 체크해서 시그널을 통해 판단한다.
Timer
: 프로그램으로부터 CPU 독점을 막고 CPU 사용권을 넘겨받기 위해 존재하는 하드웨어
: 일정 시간 간격으로 인터럽트를 발생시켜 프로그램의 CPU 제어권을 OS로 넘겨준다
: time sharing을 구현하며, 현재 시간을 계산하기 위해서도 사용된다
Memory
: CPU가 기계어를 연산하기 위한 작업공간이 메모리
: OS는 언제나 메모리에 상주
: 프로그램이 실행되면 메모리에 올라가서 프로세스가 된다
: 메모리도 device니까 device controller 존재
I/O device controller
: I/O 장치를 전담하는 작은 CPU
: 제어 정보를 위해 control register, status register를 갖는다
: I/O가 끝났을 때 인터럽트로 CPU에게 알린다
: device controller에서 발생하는 코드를 펌웨어라고 부르며, 이미 안에서 코딩이 되어 있는 상태.
local buffer
: 각각의 controller의 작업 공간
시스템 콜
: 사용자 프로그램이 OS의 서비스를 받기 위해(=특권 명령을 수행하기 위해 =SW가 본인이 할 수 없는 일을 OS에게 부탁하기 위해) 커널 함수를 호출하는 것
: 인터럽트를 활용해 스스로 OS를 불러서 CPU를 넘겨준다
현대의 운영체제는 인터럽트에 의해 구동된다
운영체제에게 CPU가 넘어가려면 인터럽트가 걸려야한다!
반대로 CPU를 빼앗기는 경우는?
- 타이머 인터럽트 : 나는 독점하고 싶은데 시간이 제한됨
- I/O 작업 해야 할 때 : 내가 하고 싶어도, 어차피 I/O 작업 끝나야 가능할 때
둘 모두 I/O 완료는 인터럽트로 알려준다
동기식 입출력 (synchronous I/O)
: I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에게 넘어간다 (기다림)
: 구현방법
(1) : I/O 끝날 때까지 CPU를 낭비시켜, 매 시점 하나의 I/O만 일어날 수 있게 한다.
(2) : I/O 끝날 때까지 해당 프로그램에게서 CPU 빼앗고 I/O 처리 기다리도록 줄 세우고(기다리는 동안 CPU가 낭비되니까), 그동안 다른 프로그램에게 CPU 준다. I/O도 CPU도 놀지 않는 방법
비동기식 입출력 (asynchronous I/O)
: I/O 시작된 후 입출력 작업이 끝나지 않더라도 제어가 사용자 프로그램에게 넘어간다 (안기다림)
인터럽트 처리도 일종의 오버헤드니까 CPU에게 비효율적!
instruction = CPU에서 수행하는 명령어 = 기계어