https://core.ewha.ac.kr/publicview/C0101020140311132925816476?vmode=f
이번강의는 컴퓨터 시스템에서 하드웨어가 어떻게 동작하는지 프로그램들이 하드웨어 위에서 어떻게 돌아가는지에 대해서 다룬다.
컴퓨터 시스템의 구조
이론적으로 보자면 메모리와 cpu 까지가 컴퓨터라고 볼수 있고
나머지 I/O 디바이스 들은 컴퓨터라고 보지않는다.
이제 각각을 살펴보자
메모리:
cpu의 작업공간이다 -> cpu는 매 사이클마다 메모리에서 기계어를 한줄씩 읽어와서 실행한다.
I/O device:
I/O device 들은 애초에 다른 기기들이다.(하드디스크 또한 I/O device다)
I/O device 들은 각각의 디바이스들을 전담하는 작은 cpu 같은 device controller 들을 가지고있다.
-> 디스크에서 헤드가 어떻게 움직일지등 내부를 통제하는것은 cpu가 아닌 device controller이다.
cpu에 작업공간인 메인메모리가 있듯 divice controller의 작업공간인 local buffer가 있다.
I/O디바이스를 직접 cpu가 통제하지않는데 이는 너무 큰 속도차이가 있어서이다
cpu와 하드디스크의 속도차이는 100만배 정도라고 한다.
메모리도 다른 I/O 디바이스처럼 전용컨트롤러인 memory controller 가 붙어있다.
원칙적으로는 메모리는 cpu만 접근할수있도록 만들어놓았다.
CPU:
cpu 의 업무는 단하나이다 사이클별로 메모리에서 기계어를 읽어와서 한줄씩 실행시키는것이다.
cpu에는 메모리보다 더 빠르면서 정보를 저장할수있는 공간인 register 라는것이있다.
mode bit 라는것이 cpu 내부에 존재하는데 현재 실행되고 있는것이 운영체제인지 사용자프로그램인지를 구분해주는 역할이다.
mode bit
0 일떄는 os 가 점유권을 갖고있을때 (커널모드,모니터 모드)
1 일때는 사용자 프로그램이 점유권을 갖고있을때 (사용자 모드)
mode bit 의 역할은 메모리,I/O 디바이스 접근의 권한을 관리
mode bit 가 0일 떄는 메모리 및 I/O 디바이스 등 다 접근가능
하지만 1일때는 제한된 instruction 만 접근가능하다 -> 보안 관련 기능임
프로그램을 다른 프로그램 혹은 직접 I/O 디바이스를 접근하려해도 mode bit 이 1 이면 막아버리도록 프로그래머가 이상한짓 못하게 막음
사용자 프로그램으로 cpu 제어권을 넘길때 mode bit을 1로 바꿔서 넘김
cpu에는 Interrupt line 들이 붙어있는데 cpu는 항상 메모리의 instruction을 계속 실행한다 -> 주기를 돌면서 계속 instruction 만 처리하는것이다. -> I/O divice에서 처리해야하는 일들 혹은 들어온 입력내용들 ex) 키보드에서 입력이 들어온다던지, 디스크에서 뭘 읽어오라 시켰는데 다 읽어왔다던지 이런것들을 cpu가 인식하도록 전달하는 방법이 interrupt line 이다.
결국 cpu는 메모리랑만 일한다. 디스크에서 읽어오라는 instruction 이있는 경우 직접 디스크에 접근하는것이 아닌 divice controller에게 읽어오라고 일을 시킨다. -> 일을 시키는 instruction 이있다. -> 읽어오는 작업 오래걸린다 -> 읽어오라고 일만시키고 다른일 그대로 한다.(만약 결과값을 받아서 처리해야하는 경우 cpu점유권이 다른 프로그램으로 넘어간다)-> 읽어온 내용들 일단 local buffer 에 쌓인다. -> interrupt line 으로 I/O의 일이 다끝났음을 알린다.
매번 cpu는 instruction이 끝날때마다 interrupt line을 한번씩체크한다. -> 타이머 interrupt 가 와있으면 다음 cpu 점유는 운영체제로 넘어간다.
사용자 프로그램이 구동하다 I/O를 해야하는 instruction 을 만나면 I/O를 해달라고 운영체제로 cpu 점유를 넘긴다.
-> I/O장치는 운영체제에서만 접근할수있다.
interrupt가 걸리면 일단 cpu제어권이 운영체제한테 넘어간다 -> 키보드입력이 끝나고 키보드 컨트롤러가 interrupt를 걸면 -> cpu 점유권이 운영체제로 넘어가고 운영체제가 interrupt가 왜 들어왔나 보고 키보드 입력을 요청한 프로그램의 메모리공간에 넣어주고 다시 적절한 프로그램으로 제어권을 넘긴다.
timer:
cpu 에 I/O같은것도 안하고 그냥 무한루프도는 프로그램을 물리면 cpu를 계속 점유하고 놓지않으니 특정프로그램이 cpu를 독점하는것을 막기위해 최초 운영체제가 cpu를 가지고있다가 사용자 프로그램에게 cpu 점유를 넘겨줄때 timer 를 세팅하며
할당된 시간내로 cpu를 이용할수있다. -> 시간이 초과하면 타이머가 interrupt를 cpu에 걸어준다. cpu 를 시분할로 사용하기위한 하드웨어
divice controller
I/O 장치를 제어하는 미니 cpu
각각의 메모리인 local buffer 을 지님
화면을 출력할때 출력할 내용을 local buffer 에 담고 control register 를 통해서 출력하라고 cpu에서 명령이 내려옴
device controller 은 하드웨어이고
그위에 올라가는 운영체제의 코드를 divice driver 라고 한다.-> cpu가 I/O 장치에 내리는 명령
실제로 하드디스크 헤드가 움직이고 이런거를 divice driver 라고 하지는 않음 -> 이러한것은 펌웨어라고 함
DMA controller(Direct Memory Access controller)
원래 메모리에는 cpu 만 접근할수있는게 원칙이고 I/O장치가 읽어오거나 어쩌구 저쩌구 일을 마치고 작업내용을 메모리에 적재해야할때도 cpu에 interrupt를 걸고 cpu가 메모리에 내용들을 옮기는게 맞지만
이러면 I/O 장치와 경우의수가 한두개가 아니라 intrrupt가 너무많이 자주 걸려서 cpu의 성능을 낼수가 없다(엄청 빠른 장치인데 계속 방해하는 꼴이니)
그래서 cpu 성능을 제대로 내기위해서 I/O 장치에서 온 정보라던지 이런것들을 DMA 컨트롤러를 통해 직접 메모리에 접근하여 정보들을 적재하고 완료되었다는 한번의 intruppt 만 걸어서 성능을 끌어올린다.
->cpu 와 DMA 컨트롤러와 동시에 같은 메모리에 접근할수 있으므로 그것은 문제가 되니 이것을 같은곳에 접근 못하게 조율하는것이 메모리 controller 이다.
I/O 장치의 접근은 특권명령이다 운영체제만 접근가능
사용자 프로그램은 I/O 해야할경우 운영체제에게 부탁하는데 그것을 시스템 콜(커널함수 호출)이라고 한다.
시스템 콜이 어떤 방식으로 이루어 지는가하면
만약 내가 c언어로 프로그램을 짠다면 main 함수가 돌아가고 그에대한 서브루틴들을 돌것이다.
근데 그 서브루틴 혹은 제어문 if문 이런것들을 만나면 메모리 주소 공간을 점프하고 계속 돌고 할텐데 결국 사용자 프로그램이 점프할수있는 메모리범위는 그 사용자프로그램 범위내이다 mode bit 이 1이기 때문에 운영체제의 메모리로 직접 접근하거나 하는건 다 막혀있다. 그래서 사용자 프로그램이 시스템을 콜해야하는 상황이 온다면 interrupt line을 세팅하는 instruction을 생성한다. 사용자 프로그램이 I/O를 위하여 interrupt를 걸수있다.-> cpu 제어권이 운영체제로 넘어간다.
그리고 시스템 콜이있다고 무조건 실행하는것이 아닌 그 프로그램이 접근할수있는 부분인지 운영체제에서 판단후 실행한다.
interrupt 를 두개로 나누는데
하드웨어(I/O,timer이런것들에의한 interrupt)인터럽트라한다
소프트웨어 인터럽트 -> Trap 라고도 부름 Trap 이라고 대부분 부름.
인터럽트 벡터: 각각의 인터럽트들이 있을텐데 각 인터럽트당 해야할 일들이 정리되어있는 코드가 있는 주소 즉 해당함수의 주소
시스템 콜:
I/O 뿐만 아니라 사용자 프로그램이 운영체제에게 무언가를 요청해야하는경우 운영체제의 코드를 수행해야하는경우 시스템 콜을 통해서 수행함
'cs > 운영체제' 카테고리의 다른 글
운영체제 6강 Process 2 (1) | 2022.12.14 |
---|---|
운영체제 5강 Process 1 (0) | 2022.12.13 |
운영체제 4강 System Structure & Program Execution 2 (1) | 2022.12.12 |
운영체제 2강 introduction to Operating Systems (1) | 2022.12.05 |
운영체제 1강 강의소개 (0) | 2022.12.05 |