<KOCW에서 강의를 듣고 정리한 내용>
사용자 및 다른 모든 SW와 HW를 연결하는 SW계층을 의미
(HW 바로 윗단에 설치되는 SW)
좁은 의미로는 커널을 말하며 메모리에 상주하는 운영체제의 부분이다.
넓은 의미로는 커널뿐 아니라 시스템을 위한 유틸리티를 광범위하게 포함하는 개념이다.
실시간 운영체제는 경성 실시간 시스템과 연성 실시간 시스템으로 나뉜다.
둘 다 Deadline이 있지만 경성 실시간 시스템은 원자로 제어 시스템등 지키지 못할 경우 매우 위험한 결과를 초래할 수 있는 시스템을 의미한다.
우리의 운영체제는 다중 작업, 다중 사용자, 시분할 방식!-!
Multiprogramming : 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻하며 여러 프로그램이 메모리에 올라가 있음을 강조하는 단어이다.
대형 컴퓨터를 위한
리눅스의 등장 -! (두둥) (리눅스는 유닉스에서 개발된 종류 중 하나)
개인용 컴퓨터에서도 널리 사용
1.MS 사에서 만든 단일 사용자용 OS
2. "메모리는 640KB보다 안커질것-!" 이라고 하였던 과거...
3. 메모리 관리 능력의 한계
컴퓨터의 내부장치에는 CPU, 메모리가 있다.
컴퓨터의 외부장치(I/O device)에는 디스크, 키보드, 마우스 모니터 등이 있다.
매 클럭 사이클마다 cpu는 메모리에서 instruction을 읽어서 실행
하나의 명령 하나를 수행할 때마다 Interrupt line을 확인하여 들어온 interrupt가 있는지 확인한다. 만약 있다면 cpu제어권이 OS로 넘어간다.
메모리 : cpu의 작업 공간
컨트롤러 : 일종의 작은 cpu로 각 장치(I/O device)를 통제
로컬 버퍼 : 각 I/O 장치의 작업공간
mode bit : cpu를 사용자 프로그램이 갖고있는지, OS가 갖고있는지 알려준다.
- 1이면 사용자 프로그램이 실행 중 <제한된 instruction만 가능 >
- 0이면 OS가 CPU에서 실행 중 (커널 모드) <모든 instruction 가능 >
Timer Interrupt : 특정 프로그램이 CPU를 독점하는 것을 막기 위함
CPU는 메모리와 로컬버퍼에 모두 접근할 수 있기에 둘 사이에서 데이터를 옮기는 일을 하게 된다. 이렇다보니 CPU가 인터럽트를 많이 당해 업무가 방해되고 -> 효율적이지 않게 동작하게 된다.
이를 해결하기 위해 DMA(Direct Memory Access)를 둔다.
DMA가 로컬버퍼의 내용을 메모리로 읽어오는 작업을 DMA가 대행한다. 그 작업이 끝나고 CPU에게 interrupt을 만들어 작업의 완료를 알려준다.
사용자 프로그램이 OS의 서비스를 받기 위해 커널 함수를 호출하는 것
모든 I/O 명령은 특권명령으로 OS를 통해서만 I/O device에 접근이 가능하다.
I/O device 접근 요청을 위해 사용자 프로그램은 SW인터럽트를 발생시켜 커널의 함수에 접근한다. 이때 호출하는 것이 시스템 콜 (system call)이다.
OS는 올바른 I/O 요청인지 확인한 후 I/O를 수행한다.
시킨 일을 다하면 이제 HW 인터럽트가 걸린다.(I/O 컨트롤러가 건다)
즉, I/O를 하기위해서는 HW, SW 인터럽트 둘 다 필요하다.
인터럽트 처리 루틴
각 인터럽트마다 실제 처리하는 코드 (해당 인터럽트를 처리하는 커널 함수)
인터럽트 벡터
해당 인터럽트의 처리 루틴 주소를 가지고 있는 것
(인터럽트 종류마다 번호를 정해서, 번호에 따라
처리해야 할 코드가 위치한 부분을 가리키고 있는 자료구조)
++
CPU의 운명 : PC(program counter)라는 레지스터(CPU 내부에 위치)가 가리키는 메모리 주소에서 Instruction 하나 읽어서 실행하는 일만 한다.
; 아주 빠른 일꾼
Interrupt (넓은 의미)
< 휘발성 > : 레지스터, 캐시메모리, 메인 메모리
< 비휘발성 > : Magnetic Disk, Optical Disk, Magnetic Tape
프로세스란?
실행중인 프로그램!
프로세스 문맥을 3가지로 분류할 수 있다.
1. 하드웨어 문맥, 2. 프로세스의 주소공간 3. 커널상의 문맥
하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU의 제어권이 이양되는 과정을 의미
중기 스케줄러로 인해 메모리를 빼앗기고 디스크로 스왑아숫된 프로세스는 중지(suspended,stopped)된 상태가 된다.