필자는 공룡책을 자세하게 다루려다 디테일하고 자세한 내용들을 모두 다루기가 버거워 좀 더 간단하게 공부해볼만한 내용들을 찾아보았다.
본 파트는 공룡책을 기본으로 하는 주제와 내용들을 간추린것에 불과하다는 사실을 먼저 알리고자 한다. 교재는 os? oh yes라는 서적을 참고하였다.
운영체제란 무엇인가? 분명히 많은 작고 큰 소프트웨어들이 운영체제하에 관리된다는 사실만은 다들 알고 있을 것이다.
우선 운영체제(operating system)는 사용자의 편리성과 자원의 효율적 사용이 목적이라 할 수 있다. 아마 모든 앞으로 다룰 내용들이 이 목적에 부합한 내용들만으로 이루어지지 않을까 싶다.
*booting
전원버튼이 눌러지면 커널이라는 운영체제의 일부가 메모리에 올라와 실행되어 장치들을 준비시키고 각종 레지스터 값을 초기화한다. 사용자의 입력을 받을 준비가 되면, 그때 '부팅'되었다고 한다. 이 커널을 메모리 위에 올려주는 역할을 하는 것이 "부트 프로그램"(부츠스트랩로더) 이다. ROM에 저장되어 있다가 전원이 켜지면 제일 먼저 실행되어서 커널을 찾아 메모리에 올려주는 것이다. 일반적으로 작은 pc의 경우엔 부츠스트랩로더가 먼저 디스크에 저장되어있는 부트프로그램을 메모리에 올려 실행시키면, 이 부트프로그램이 커널을 올리는 방식이다.
*register
8/16/32 비트를 가질 수 있으며, cpu내에 존재한다.
-MAR(메모리 주소 레지스터)
-MBR(메모리 버퍼 레지스터)
-IR(명령어 레지스터)
-PC(프로그램 카운터)
-PSW(cpu의 현 상태 저장) 등등이 있고 이 외에도 여러 있다.
*Fetch: 명령어 반입이라 한다. 메모리에 있는 명령어를 처리기의 레지스터로 갖고오는 행위를 일컫는다.
*interupt
컴퓨터 시스템에 존재하는 자원들의 상태를 cpu가 주기적으로 확인하는 방식을 polling이라 한다.
-> 굳이 알릴일 없으면 낭비, 부담, 현상태를 다음번 polling까진 알릴 수 없다는 단점이 있다.
interupt는 이 번거로운 방식을 개선시킨 방식이라 보면 된다. 즉, 각 자원들이 능동적으로 자신의 상태변화를 cpu에게 알리는 방식이다.
또, cpu가 자기 자신에게 interupt 하는 상황을 trap이라 하고, 실행중인 명령어에 의해 interupt가 생기는걸 software interupt라고 한다.
-interupt에 의한 입출력: 입력완료시 interupt를 통해 cpu에 알려지는 방식으로, 한 워드 단위로 처리된다.
-DMA: Channel이라는 위성 프로세서에게 cpu가 입출력할 데이터의 시작주소와 크기 등을 알려주고, 입출력은 채널의 주도하에 이루어진 다. 한 번의 입출력을 블록이라고 하는데, 블록단위로 cpu에게 Channel이 interrupt를 보내 알리게 된다.
위와는 다르게, 입출력을 위한 하드웨어의 구성에 따라 두가지로 분류할 수 있다.
-독립적인 입출력(Isolated I/O)
-메모리 주소지정 입출력/9Memory-mapped I/O)
'CS기본지식 > operating system' 카테고리의 다른 글
교착 상태(Deadlock) (0) | 2023.01.27 |
---|---|
CPU Scheduling (0) | 2022.12.23 |
Process와 Thread (0) | 2022.12.21 |
댓글