Introduction
최상위: Application
그 사이: 운영체제
최하위: Hardware
-> 애플리케이션에서의 하드웨어 사용을 편리하게 하는 것이 궁극적인 목적
Ex) 파일을 더블클릭하면
① 실제 메모리에 가용 공간이 있는지 확인
② 디스크에서 그 파일이 저장된 위치를 찾음
③ 해당 파일을 메모리에 적재하고
④ 프로세스로 만들어
⑤ CPU에 그 프로세스를 할당해 프로그램을 실행
+ 필요에 따라 디스크IO, 콘솔 입출력 등도 시행
이러한 작업을 OS가 수행함
Chapter 1
운영체제란 무엇인가?
사용자와 하드웨어 사이에 존재하는 소프트웨어
-> OS의 중요한 역할: 컴퓨터 하드웨어 관리
컴퓨터는 3가지 component로 구성된다
- Processing Unit: CPU 등
- I/O System:
- Storage system: 메모리, 디스크 등
운영체제의 역할
- 컴퓨터 하드웨어 관리
- application program을 실행하기 위한 환경을 제공
1) OS is a resource allocator: 하드웨어 자원을 관리한다.
여러 프로세스가 같은 자원을 요청했을 때 누구에게 자원을 할당할 것인가?
2) OS is a control program: 컴퓨터를 안전하고 안정적으로 사용할 수 있도록 한다.
-> 사용자가 운영체제의 특정 메모리에 접근해 컴퓨터가 다운되거나
다른 사용자의 메모리 영역을 침범해 그 컴퓨터 사용에 문제가 생기는 등의 일을 막는다.
하드웨어는 어떻게 동작하는가?
1) 부팅
① Bootstrap 프로그램(firmware라고도 함) 실행
메모리나 CPU 등의 component들은 잘 꽂혀 있는지, 메모리에 bad sector는 없는지, ...
등 기본적인 check- up
② kernel을 로딩한 후 기본적인 초기화 작업
③ 윈도우) 로그인 화면, 운영체제: 비밀번호 입력같은 이벤트 발생까지 그냥 기다림(interrupt)
④ 마우스 클릭, 키보드 입력 등의 이벤트 발생
이벤트 처리를 위한 interrupt service eoutine으로 넘어감
- 메모리에 interrupt vector table 존재해서 interrupt 처리가
interrupt interrupt 발생 시 그 interrupt를 처리할 수 있는 interrupt service routine의 주소가 저장되어 있다
interrupt 발생 시 그 주소로 넘어감
2) Interrupt 처리 방식
- Polling system
주기적으로 특정 device를 확인해서 interrupt를 처리하는 방식
- Interrupt vector table
interrupt 발생 시 interrupt vector table을 뒤져서 해당하는 interrupt service routine 호출
interrupt vector table은 메모리 상에 존재하며 interrupt service routine의 주소가 저장되어 있다.
Interrupt service routine 도 소프트웨어다!
3) interrupt 발생 시 주소를 반드시 저장해야 한다.
Interrupt service routine 종료 후 중단됐던 작업을 다시 해야 하기 때문에 interrupt 발생 시 주소를 반드시 저장해야 한다. (스택에서 함수 호출 시 복귀 주소랑 비슷한 개념인 듯)
주소와 더불의 현재 상태 (Program counter나 레지스터의 값 등)도 저장한다.
4) Interrupt에도 중요도(우선순위)가 있다
더 중요한 Interrupt 처리 시 다른 Interrupt는 diabled하고 중요한 interrupt 처리 후 disabled 해제
Ex) reset: 무슨 작업을 하고 있든 리셋이 우선 -> 리셋은 disable 할 수 없다
5) Trap: Software interrupt
0으로 나누는 등 에러 발생 또는 사용자 요청 시 Trap 발생
운영체제는 이벤트가 발생하지 않으면 가만히 있는다
-> Interrupt에 대한 reponse에 의해 동작한다.

Storage structure
프로그램 실행의 sequence
① 프로그램을 메모리에 적재(load)한다.
② 명령어 인출(fetch)
③ 기계어 코드를 decoding한다
④ 필요 시 operand 인출
⑤ 명령어 실행
⑥ 결과를 레지스터에 저장 + 이 과정에서 PC(Program counter) 값 1 증가
이후 ②로 돌아가서 ②~⑥ 반복
①: CPU는 메모리에서만 읽어올 수 있으므로 프로그램을 메모리에 올려야 한다.
그런데 메인 메모리는 휘발성인 데다가 다른 프로그램도 쓰다보니 너무 작다.
-> Extension 필요

I/O Structure
- I/O device 와 CPU는 병렬적으로(동시에) 실행할 수 있다.
- 모든 I/O 장치는 그 장치를 위한 Device controller를 갖는다.
Disk는 Disk controller를 갖고 Keyboard는 Keyboard controller를 가지며,
그 Controller 안에 여러 register가 존재하며 그들을 목적에 맞게 설정해 실제로 IO장치에 access한다.
- Device controller는 OS 내의 Device driver가 제어한다.
- I/O device를 사용하기 위해 CPU가 I/O device에 직접 값을 쓰는 게 아니라 Device controller 내에 Local buffer에 값을 쓰고, Device controller가 그 Local buffer로부터 값들을 I/O device에 쓰게 된다.
반대의 경우도 마찬가지. I/O device로부터 Device controller 내의 Local buffer에 쓰고 그 값을 Device controller가 CPU나 메모리로 전달함

- Device와 Device controller 사이의 Communication은 Interrupt에 의해 이루어진다.
디바이스 제어를 제어한다 = Device controller 내의 Register 값을 통해 제어한다.
DMA(Direct Memory Access)
I/O도 interrupt에 의해 동작한다.
1Mb/interrupt: 10Mb 데이터 전송을 위해서는 10번의 interrupt 발생
= 10번이나 중단 후 재시작 -> 속도 저하
많은 데이터를 한 번에 보내는 게 조금씩 여러 번 보내는 것보다 유리
DMA: CPU의 제어 없이 I/O device에서 많은 양의 데이터를 바로 메모리로 전달
-> interrupt가 byte마다 발생하는 것이 아니라 block마다 발생
원래는 I/O device가 CPU에 interrupt를 걸고 CPU가 I/O device로부터 읽어와서 메모리로 전달

Symmetric Mutiprocessing Architecture

여러 개의 CPU가 존재하고 각 CPU들은 System bus로 memory와 연결되어 있다.
이 CPU는 독립적인 entity로 존재한다.
Multi-core Design

Single chip 안에 CPU 코어가 존재하는 구조.
Symmetric Mutiprocessing Architecture에 비해 전력 소모도 적고 더 빠르다.
'강의노트 > 운영체제' 카테고리의 다른 글
[운영체제] 2주차 (3) (0) | 2021.03.14 |
---|---|
[운영체제] 2주차 (2) (0) | 2021.03.13 |
[운영체제] 2주차 (1) (0) | 2021.03.12 |
[운영체제] 1주차 (3) (0) | 2021.03.08 |
[운영체제] 1주차 (2) (0) | 2021.03.07 |