FrontEnd
Javascript
Diary
ML
CS
Django
Algorithm
AWS
Co-Work
HTML
CSS
Python
React
ReactNative

OS-System_Structure

kocw OS 강의(이화여대 반효경 교수님)를 정리하면서 공부하기 위한 게시글 ✍

시스템을 크게 CPU, Memory, I/O device 관점에서 봐보자

CPU 는 해야할 일을 Memory에 올려놓고 하게 되는데, 이때 CPU랑 가까운 registers, memory, I/O device 로 속도가 빠르다

Mode bit

1은 사용자모드, 0은 커널모드로 사용자 프로그램이 CPU를 사용할때는 1로 지정하여 시스템상 중요한 액세스들을 막아놓는다.(I/O 명령같은 것)

Device Controller

I/O 장치를 관리하는 작은 CPU개념, CPU가 매번 I/O Device에 방문할수 없으므로 buffer를 가지고 buffer에 정보저장. => Device Controller가 interrupt로 CPU에 알려줘서 가져감

이때 DMA 라는 Direct Memory Access를 이용해 Device차원에서 메모리에 복사해두고 인터럽트로 알린다.

>Device Driver
>:CPU가 장치를 쓰기위해 쓰는 코드를 담음(software) , 사용설명서가 디바이스에 들어가있으면 펌웨어,

>Device Controller
>:장치통제하는 작은 CPU(hardware)

시스템 콜

사용자 프로그램이 실행되다가 I/O요청과 같은 중요한 요청을 하기위해 운영체제에 함수를 요청하는게 시스템 콜

즉 내가 프로그램을 실행하다가(mode bit 1) ==> I/O를 하기위해선 0에 해당하는 권한이 필요한데 프로그램이 운영체제에 인터럽트 라인을 작성하여 인터럽트를 걸어줄수있다

ex) Disk에서 뭔가를 읽어와라

인터럽트

소프트웨어 인터럽트 == 트랩

:프로그램이 인터럽트 라인을 짜서 CPU로 넘어가는 인터럽트(예외발생도 포함) (시스템 콜 == 트랩을 이용한 인터럽트) ==> 올바른 요청인 경우에 I/O컨트롤러에게 I/O요청을진행

하드웨어 인터럽트(일반적인 인터럽트) - I/O컨트롤러 인터럽트

timer 인터럽트 :CPU를 특정 프로그램이 독점하는 것을 막기위해 사용(time sharing에 이용) timer는 특정 시간이 지나면 OS로 제어권 넘어가게 인터럽트

IO를 위한 인터럽트 과정:

사용자프로그램이 시스템 콜을 이용하여 인터럽트 요청(soft) ==> 인터럽트 벡터의 특정 위치 ==> 인터럽트 벡터가 가리키는 인터럽트 서비스루틴 ==> I/O valid확인후 작업 ==> 일 다했다고 하드웨어가 인터럽트 요청함(hard)

인터럽트 벡터 : 각 인터럽트 종류마다 어디있는 것을 실행시켜야하는지 주소를 정의해놓은 것

인터럽트 서비스 루틴 : 운영체제에 특정 인터럽트 코드가 들어왔을때 처리해야할 것을 매칭해준다 - 커널함수

즉 운영체제는 인터럽트에 의해 구동된다.