복습 포스트 .. (수정예정 )
HGU 전산전자공학부 김인중 교수님의 20-1 운영체제 수업을 듣고 작성한 포스트이며, 첨부한 모든 사진은 교수님 수업 PPT의 사진 원본에 필기를 한 수정본입니다.
Definitions of operating system
Computer system organization and operation Computer system architecture
Operating system structure and operation
Core components of OS
Computing environments
운영체제라고 하면, 뭔가 거대한 것을 상징하는 것처럼 보인다. 운영체제의 사전적 정의는 "모든 하드웨어와 모든 소프트웨어를 관리하는 컴퓨터 시스템의 한 부분인 '실행 관리자'"라고 한다.
대략, OS는 user와 H/W 사이의 중개라고 볼 수 있으며, Kernel + additional programs라고 볼 수 있다.여기서, Kernel은 항상 실행되면서 하드웨어의 자원을 프로세스에 분배하고, 메모리와 프로세스를 제어하며, 시스템 콜 등을 수행하는 운영체제의 코어이다.
operaing system goals: 운영체제는 하드웨어를 제어하고 컴퓨터 자원을 관리하며, 유저의 컴퓨터 사용을 편리하게 해주고 응용 프로그램들의 수행을 도와주며, 사용자와 하드웨어 사이의 매개체 역할을 한다.
Components of Computer System: computer system은 Hardware, OS, Application programs, Users로 이루어져 있다.
What OS Do?
System View
OS는 resource allocator이다. CPU, 메모리, 파일 저장 장치, I/O장치 등 모든 자원을 관리하며, 프로그램들에게 순차적으로 리소스를 할당한다.
OS는 제어 프로그램이다. 컴퓨터 시스템의 경찰에 해당하는 역할 또한 담당한다. 여러 개의 프로그램이 동시에 동작할 때, 하나의 에러가 다른 프로그램들을 망가뜨릴 수 있으므로, 에러와 같은 상황을 제어하여, 전체 프로그램에 끼칠 악영향을 막는다.
computer system operation: 컴퓨터를 실행하면 어떤 일이 발생하는지 알아보자
Bootstrap program(firmware)가 실행된다. 여기서 Bootstrap
은 가장 먼저 실행되는 부팅을 맡아주는 소프트웨어이고, firmware
는 메인보드 안에 내장되어 있는 소프트웨어를 뜻한다.
OS kernel: 부팅 --> 마우스, 키보드 등의 이벤트 발생을 기다린다 --> 이벤트 발생 시, 처리해준다
interrupt driven programs: 인터럽트가 발생하면, 그것을 디텍트 하여 해결하는 동작
Moern Computer System
Interrupt
는 하드웨어/소프트웨어가 주목을 끌기 위해 보내는 동기화되지 않은 신호이다. 각각의 인터럽트들은 IRQ number가 지정되어 있으며, 이는 어떤 종류의 인터럽트이며 어떻게 처리해야 하는 지 판별해준다. ìnterrupt handler
는 인터럽트마다 처리하는 루틴이 지정되어 있는 것을 의미하며, interrupt vector
는 ìnterrupt handler
의 시작 주소를 저장하고 테이블을 의미한다.
A machanism to process event
Interrup Mechanism
CPU가 현재 work를 멈추고, interrupt handler
에 명령을 보낸다. (interupt handler
를 호출하기 전에, return address와 state를 저장해둬야 한다. --> 찾아보니 해당 프로세스의 PCB(Process Control Block)에 저장한다고 한다.)
interrupt는 해당 handler에 의해 처리된다.
interrupted된 프로그램으로 돌아간다.
Interrupt-based I/O (CPU와 I/O가 동시에 실행)
CPU는 요청을 보내면서 현재 프로세스나 다른 일들을 진행한다.
data 전송이 끝났을 때, I/O device는 intterupt를 보낸다.
Storage Structure
데이터나 명령어를 기억할 수 있는 저장공간을 의미하는 저장 구조이다. primary storage를 보면 레지스터, 캐쉬, 메인메모리로 구성되어 있다. 이들은 모두 전원을 껐을 때, 날라가게 되는 휘발성 메모리라는 특징을 지니며, 저장공간이 작지만 빠르며, 가격이 비싸다는 특징이 있다. 우리가 흔히 RAM으로 알고 있는 메인 메모리는 데이터를 저장하지만, 연산은 일어나지 않는다. 연산을 하기 위해 명령어와 data를 CPU로 가져와야 하는데, 이 때 메인 메모리와 레지스터의 속도 차이가 문제가 된다.
위의 표에서 나타내고 있는 레지스터와 메인 메모리의 access time을 보면, 레지스터는 매우 빠른 속도로 reading과 writing이 가능한 반면, 메인 메모리는 상대적으로 느린 속도라는 것을 확인할 수 있다.
레지스터에서 메인 메모리를 엑세스 하는데 시간이 많이 걸릴수록 전체적인 성능 저하를 가져오게 되므로, 중간 역할로 캐쉬메모리를 사용한다. cache
는 CPU 내에 존재하며, 메인 메모리에서 읽어온 데이터를 임시로 저장하여, 복사본을 만든다. 레지스터가 전에 읽어왔던 데이터와 동일한 데이터를 엑세스 해야 할 경우, 메인 메모리를 엑세스 하지 않고 캐쉬를 엑세스하면 속도가 개선된다.
결국
cache
는register
와main memory
사이의 속도 차로 인한 병목 현상을 막기 위해 사용한다.main memory
접근 횟수를 줄여, 성능을 개선한다!
I/O Device Access에는 Busy waiting
이라는 old system과 Interrupt-driven I/O
, DMA(Direct memory ACcess)
라는 modern system이 존재한다.
Busy waiting
시스템이다. CPU가 I/O operation 요청 후, 주기적인 체크를 하며, operation이 끝나야 다음 루틴을 수행한다. 이는 CPU가 다른 작업을 하지 못하고 계속 기다려야 한다는 문제가 발생한다. Interrupt-driven I/O
는, CPU가 device controller에게 동작을 요청했을 때, device controller가 동작을 마친 후, interrupt controller에게 인터럽트를 요청한다. 그러면, interrupt controllerrk CPU에게 인터럽트를 보낸다.
device controller
가 디바이스로부터 어떤 데이터를 읽어왔을 때, 이 데이터는 메모리에 저장되어야 한다. 따라서, CPU는 device controller
의 로컬 버퍼에 있는 메모리를 읽어와서 writing을 해야 한다. (local buffer
까지 데이터가 왔다 == operation이 끝났다는 의미) 키보드/마우스와 같은 경우는 작은 용량이라 부담이 적지만, 디스크 같은 경우는 한 번에 많은 양의 데이터(블럭)을 한꺼번에 전송한다. 이처럼, 읽어온 데이터가 큰 용량이라면, CPU가 하나씩 읽어 메모리에 writing을 하는 것은 성능을 저하시킨다.
DMA
Direct Memory Access
같은 경우, CPU가 직접 접근하여 writing하지 않고, device controller가 직접 데이터를 메인 메모리에 저장시켜줄 수 있다. CPU가 직접 local buffer에 있는 데이터를 옮길 필요없이 DMA를 통해 전송시키므로, CPU가 단순한 transfer 작업에 사용되지 않는다는 장점이 있다. 이는, 전송해야 하는 데이터의 양이 많을 때 성능 개선 효과가 높다. 하지만, 이는 하드웨어 구성을 복잡하게 하므로 간단한 디바이스에는 잘 사용하지 않는다.
일반적으로 싱글 코어이며, 하나의 CPU가 존재한다. 간단하며 저렴하다는 장점이 있다.
컴퓨터는 1대인데, 프로세스는 2개 이상인 것을 의미한다. 시스템의 컴퓨팅 속도를 향상시키기 위해, CPU가 추가된다. 멀티 프로세서는 Tightly-coupled system
으로, bus, clock, memory, peripheral 등을 공유한다.
멀티프로세싱의 종류에는 Symmetric multiprocessing(SMP, 대칭형 멀티프로세싱)과 Asymmetric multiprocessing(비대칭형 멀티프로세싱)이 있다.
SMP는 여러개의 CPU가 대등한 위치에서 협업을 한다. 서로 비는 타임에 실행해야 하는 프로그램을 가져가서 실행시킨다.
Asymmetric multiprocessing은 하나의 CPU가 master, 나머지가 slave로 구성된다. 두 개 이상의 각각의 프로세서가 자신만의 다른 특정 기능을 수행하는 아키텍쳐를 의미한다.
장점