컴퓨터 시스템에서 하드웨어가 어떻게 동작하는지,
프로그램들이 하드웨어 위에서 어떻게 돌아가는지 알아보자
컴퓨터는 베이스로 CPU 와 메모리로 구성되어있다.!
Input 컴퓨터로 들어가는 데이터!
Output 다시 컴퓨터에서 장치로 돌아가는 데이터
메모리라는건 CPU 의 작업공간이다.
CPU 에서 매 클럭 사이클마다 메모리에서 Instruction 기계어를 하나씩 읽어서 실행하게 된다.
IO 디바이스는 별개의 장치들
DISK 는 I/O 두 기능을 다한다.
이 I/O 디바이스들은 이 디바이스들을 전담하는 작은 CPU 들이 붙어있다.
그걸 디바이스 컨트롤러라 한다.
디스크 의 내부를 통제하는건 디스크 컨트롤러가 한다.
헤더를 어떻게 움직일지..
CPU 안에는 메모리 보다 빠른 레지스터가 있다.
modebit - CPU 에서 실행되는게 운영체제인지 사용자 프로그램인지 구분해준다.
(CPU 는 하나의 인터럭션을 수행하고나면 인터룹트에 들어온게 있는지 확인한다 )
TIMER - 처음에는 운영체제가 CPU 를 가지고 있다가 사용자 프로그램이 실행되면
CPU 를 넘겨주는데 넘겨주기 전에 TIMER 에 값을 세팅 하고 넘겨준다.
사용자 프로그램의 인터럭션이 이 timer 에 할당된 시간(1초도 안되는 ms)을 넘으면 CPU 에 인터룹트를 건다.
인터룹트를 걸면 인터룹트 라인에 들어가고 ,
CPU 는 사용자 프로그램에서 다시 운영체제로 넘어가게 된다.
- 한 프로그램이 CPU 를 사용하다가 I/O 작업을 해야되면 , CPU 를 운영체제에 넘겨준다.(시스템 콜)
사용자 프로그램은 I/O 작업을 직접할 수 없고 , 운영체제를 통해서만 하게 되어있다.(보안적 문제로)
운영체제가 해당하는 작업을 I/O 컨트롤러에게 시킨다.
근데 이 작업은 오래 걸리니까, 요청한 프로그램 말고 다른 프로그램에게 CPU 를 넘겨준다.
I/O 요청했던 프로그램은 언제 다시 CPU 를 받냐? 하면
I/O 컨트롤러가 요청한 작업이 끝나서 ,
자신의 로컬 버퍼에 들어오게 되면 컨트롤러가 CPU 에게 인터룹트를 건다.
인터룹트가 들어오면 CPU 제어권이 실행중인 프로그램에서 운영체제에 돌아오게된다.
그럼 CPU 가 들어온 값을 보고 , 운영체제는 Input 으로 들어온 값을 요청했던 프로그램 메모리에 넣어주고
방금전에 인터룹트 된 프로그램에 다시 제어권을 주고 그 친구의 시간이 끝나면
라운드 로빈으로 돌리면서 Input 요청을 받아 준비가 완료된 프로그램에 다시 제어권을 주게 된다.
0 일때? 운영체제가 CPU 에서 쓰일때 , 커널모드라고 한다.
1 일때 , 사용자 모드 일때
Modebit 의 역할은? 0일때는 메모리 접근 뿐만 아니라 I/O 디바이스 접근 인스트럭션도
0일때는 사용 가능하다.
1일때는 제한된 인스트럭션만 사용할 수 있게 된다.
보호와 보안의 목적으로 나눠져있다.
특정 프로그램이 독점하는것을 방지하기 위해 있다.
타이머 값이 0 이되면 프로그램의 권한을 뺏을수있다.
I/O 디바이스를 접근하는 작은 CPU 라고 보면된다.
실제 데이터를 저장하는 로컬 버퍼가 있다.
DMA Controller?
직접 메모리를 접근할 수 있는 컨트롤러다.
원래는 메모리에 접근할 수 있는 장치는 CPU 뿐이었는데,
DMA 도 접근할 수 있게 되어있다.
I/O 장치가 너무 자주 인터룹트를 거니까 CPU 가 너무 멈추게 된다.
DMA 역할은 I/O 작업들의 요청이 들어왔을때,
I/O 의 있는 로컬 버퍼 데이터를 메모리에 옮기는일을 CPU 가 하기엔 너무 손해가 크다.
DMA 가 이 데이터를 메모리에 복사하는 역할을 한다.
사용자 프로그램이 직접 I/O 를 못하고 운영체제를 통해서만 할 수 있다.
파일을 읽어와야 할때 어떻게 하느냐
운영체제의 부탁을 해야하는데
이 부탁하는걸 시스템 콜 이라고 한다. 사용자 프로그램이 운영체제에 I/O 요청을 하는 것
소프트웨어적으로 인터룹트 라인을 건다.
하드웨어 - 타이머나 I/O 가 거는 인터럽트
넓게는 소프트웨어의 인터럽트도 포함한다.
'프로그래밍 > 운영체제' 카테고리의 다른 글
[운영체제] Process2 - Thread (0) | 2020.06.14 |
---|---|
[운영체제] Process (0) | 2020.06.13 |
[운영체제] System Structure & Program Execution 2 (0) | 2020.06.13 |
[운영체제] Introduction to Operating System (0) | 2020.06.11 |
[운영 체제] 운영체제 개요 (0) | 2020.06.11 |