* 학교 전공수업, Operating System Concepts 서적, 기술 블로그 등을 통해 공부한 내용을 정리한 것
* 공부하면서 내용을 덧붙일 예정입니다.
목차
1. What Operation Systems Do: 운영체제가 하는 일
2. Computer-System Organization: 컴퓨터 시스템의 구성
3. Computer-System Architecture: 컴퓨터 시스템의 구조
4. Operating System Structure: 운영체제의 구조
5. Operating System Operations: 운영체제의 작동?
(추가 예정)
* 운영체제를 공부해야하는 이유
개발자가 작성하는 코드는 운영체제 위에서 실행되기 때문에, 운영체제에 대해 이해하고 그 작동방식에 대해 알아야
안전하고 효율적인 프로그래밍을 할 수 있다.
따라서 직접 운영체제를 작성하는 프로그래머가 아니더라도, 운영체제 위에서 실행되는 프로그램을 작성하는 개발자라면 운영체제를 공부하고 컴퓨터 하드웨어 구동 방식 등에 대해 이해해야 한다.
1. What Operation Systems Do: 운영체제가 하는 일
운영체제란?
- 컴퓨터 시스템이 동작할 때, 컴퓨팅 자원들을 잘 사용할 수 있는 방법을 제공해주는 프로그램
(OS의 역할: 여러 요청들이 efficient & fair 하게 자원을 사용할 수 있도록 자원을 할당해줌) - 환경을 제공한다는 점에서, 정부의 역할과 유사!
- user와 컴퓨터 하드웨어(CPU, 메모리, I/O 장치) 사이에서 중간 역할을 해주는 프로그램
- 운영체제는 컴퓨터에서 항상 실행되는 프로그램이다. (일반적으로 커널이라고 함)
-> 항상 ram에 상주하고 있는 프로그램이다. - 운영체제에는 항상 실행중인 커널, 미들웨어 프로임워크, 시스템 프로그램이 포함된다.
- OS는 control program 이다.
프로그램의 두 유형
- 시스템 프로그램: 운영체제와 연관되어 있으나 커널의 일부분은 아닌 프로그램을 말함
- 응용 프로그램: 시스템의 운영과 관계없는 모든 프로그램을 말함
미들웨어
- 응용 개발자에게 추가 서비스를 제공하는 소프트웨어 프레임워크의 집합을 말함
- 휴대용 운영체제는 종종 핵심 커널외에도 미들웨어를 함께 제공한다.
(ex. iOS, 안드로이드 운영체제는 데이터베이스, 멀티미디어 및 그래픽스 미들웨어를 제공)
2. Computer-System Organization: 컴퓨터 시스템의 구성
범용 컴퓨터 시스템
- 현대의 컴퓨터는 여러 개의 divice controller(장치 제어기: 특정 장치를 관리, 일부 컨트롤러는 여러 디바이스 관리 가능) + 한개 이상의 CPU로 구성되어있다.
(이들은 공통 버스로 연결되어 있고, 공통 버스는 shared memory에 대한 접근을 제공한다.) - CPU와 device controller는 메모리 사이클을 얻기 위해 경쟁하며 concurrent excution(병렬 수행)된다.
컴퓨터 부팅 과정(Computer Startup)
- 컴퓨터 전원이 켜지거나 재부팅 시 bootstrap program을 로드한다.
- 컴퓨터 전원을 키면, CPU로 신호가 전달된다.
- CPU는 ROM이나 EEPROM 메모리에 접근해서 펌웨어라고도 불리는 초기화 프로그램(bootstrap program)을 찾는다.
- 부트스트랩 프로그램은 시스템을 초기화 하고, (하드 디스크에 접근해서) 운영체제의 커널을 찾아 메모리에 적재한다.(부트 로더)
- 운영체제(커널)의 entry point 부터 커널 수행이 시작되면, 시스템 & 사용자에게 서비스를 제공할 수 있다.
컴퓨터 시스템 연산(Operation)
- 맨 처음 시작 프로세스(유닉스 기준으로 init 프로세스)가 시작된 뒤,
시스템이 완전히 부트 되면 시스템은 event가 발생하기를 기다린다. - event 발생 시, 디바이스 컨트롤러는 인터럽트(interrupt) 를 통해 CPU에게 이벤트 발생을 알리는 신호를 보낸다.
- 인터럽트 발생 시, 커널은 수행하던 작업을 멈추고 인터럽트를 처리한 뒤 다시 기존 작업을 처리한다.
- 인터럽트는 HW, SW에 의해 발생 가능하다.
- HW: 시스템 버스를 통해 CPU에 신호를 보내 인터럽트 발생시킴
- SW: 시스템 콜이라는 특정한 명령을 실행함으로써 인터럽트 발생시킴
(trap/exception - 에러/유저 요청에 의해 발생하는 인터럽트)
인터럽트 처리
- CPU가 인터럽트 신호를 받으면, CPU는 하던 작업을 잠시 중단한 뒤,
- 인터럽트 벡터 테이블에서 인터럽트를 유발한 장치에 대한 인터럽트 서비스 루틴의 시작 주소를 찾는다.
- 이후 인터럽트 서비스 루틴이 실행되고, 서비스 루틴이 인터럽트 핸들러를 호출한다.
- 인터럽트 서비스 루틴의 실행이 완료되면, CPU는 기존 작업(인터럽트 되었던 연산)을 마저 수행한다.
- 이렇게 인터럽트 기반으로(interrupt driven 방식) 운영체제를 설계하지 않고 CPU가 이벤트를 계속 감시해서 처리를 수행하는 방식(Polling 방식)으로 운영체제를 설계하면 CPU 자원을 낭비하게 된다.
따라서, 운영체제는 interrupt driven 방식이다!
I/O (입/출력)
- I/O = device -> device controller의 local buffer
- I/O device와 CPU는 동시에(concurrently) 실행될 수 있다.
- device controller는 local buffer를 가지며, 주변 장치(device)와 지신의 로컬 버퍼 사이의 데이터 전송을 담당한다.
- CPU는 메인 메모리와 로컬 버퍼 사이의 데이터 전송을 담당한다.
- 각 device controller는 device driver를 가짐(driver는 device에 대한 일관된 인터페이스를 제공함!)
- device controller: 로컬 버퍼 + 레지스터 집합을 가진다.
- device controller는 인터럽트를 발생시킴으로써 CPU에 자신의 작업이 끝났음을 알린다.
- 시스템 콜: OS와 사용자 프로그램을 매개하는 인터페이스.
시스템 콜을 통해 OS에 I/O(ex. read(), write(), open(), close() 등)를 요청할 수 있다.
* I/O 연산 예시: 키보드에서 한 문자를 읽어오기- device controller가 다음 동작을 정하기 위해 레지스터(controll register)에서 명령어를 읽어온다.
(읽은 명령어 = 키보드에서 입력한 한 문자 읽어오기) - device controller가 device(키보드)로부터 읽어온 데이터를 자신의 로컬 버퍼로 보낸다.
- 전송이 끝나면 device controller가 device driver에게 인터럽트를 보낸다.
- device driver가 통제권을 OS에게 반환한다. (이 때 데이터/데이터에 대한 포인터 or 상태정보를 같이 반환할 수도 있다.)
- device controller가 다음 동작을 정하기 위해 레지스터(controll register)에서 명령어를 읽어온다.
직접 메모리 접근: DMA
- device controller가 CPU의 개입 없이 메인 메모리 <-> 자신의 로컬 버퍼로 데이터 블록을 직접 전송하고
전송이 끝날때마다 인터럽트를 발생시킴으로써, device controller가 작업을 수행하는 동안 CPU가 다른 작업을 수행할 수 있게 된다. - 한 바이트마다 인터럽트가 발생했던 예전 방식과 다르게, 데이터 블럭 하나 당 인터럽트 하나가 발생된다.
- DMA를 통해 CPU 성능을 (매우) 올릴 수 있다.
(TODO..)
3. Computer-System Architecture: 컴퓨터 시스템 구조
Operating-System Structure
Operating-System Operations
Process Management
Memory Management
Storage Management
Protection and Security
Kernel Data Structures
Computing Environments
Open-Source Operating Systems
(최종 업데이트: 22.7.7 )
'CS > 운영체제론' 카테고리의 다른 글
운영체제 공룡책 4장(Ch.4) 연습문제 및 풀이 (0) | 2022.07.12 |
---|---|
운영체제 공룡책 3장(Ch.3) 연습 문제 및 풀이 (0) | 2022.07.11 |