강의 소개
현재 수강하고 있는 KOCW 내 이화여자대학교 운영체제(2017, 반효경) 강의의 내용을 정리하였습니다.
개발자 관점에서 운영체제 기초를 학습하는 무료 강의로 자세한 강의 내용은 수강을 추천드립니다.
컴퓨터 시스템의 구조
(직전 글에 이어서 설명)
시스템 콜
사용자 프로그램이 어떤 작업을 하고 싶은데 그 작업이 자신의 권한으로는 못하는 **특권 명령일 때, 운영체제에게 부탁을 한다. 이것이 시스템 콜이다.
달리 말하면, 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것이다.
시스템 콜을 하게 되면, 사용자 프로그램의 위치에서 기계어가 실행되다가 운영체제로 CPU를 넘겨 운영체제의 위치의 기계어로 이동한다.
이때, 사용자 프로그램 --(CPU 이동) --> 운영체제 하는 방법은 **인터럽트가 발생되어야 하기 때문에
시스템콜을 할 때는 사용자 프로그램이 운영체제에게 CPU를 보내기 위해 스스로 인터럽트를 건다.
EX. 모든 I/O는 특권 명령이기 때문에, 사용자 프로그램이 I/O를 요청할 수는 없다. 따라서 이때 시스템콜을 발생시켜 운영체제에게 작업을 부탁한다.
**특권 명령
**특권 명령
특권 명령: '특권 명령'은 보안을 해칠 수 있는 중요한 명령어이다. 운영체제(= OS)만 사용할 수 있고 따라서 mode bit이 0일 때만 실행할 수 있다.
만약 실행되려는 기계어가 특권 명령인지 CPU가 확인한 후 mode bit이 0이 아니면 자동적으로 CPU가 운영체제로 넘어간다.
그때, CPU가 넘어가는 방법으로 **interrupt(아래에서 설명)와 Exception(위 상황과 같이, 사용자 프로그램이 권한이 없는 특권 명령을 실행하려고 할 때 자동적으로 CPU가 운영체제로 넘어가는 상황) 이 있다.
** 인터럽트
현대의 운영체제는 인터럽트에 의해서 구동된다.
언제든 운영체제가 사용자 프로그램에 대해서 CPU를 빼앗아 올 수 있는 것이 아니기에 인터럽트를 활용하는 것이다.
** 인터럽트(interrupt)
CPU에는 interrupt line이 붙어있다. CPU는 다음 기계어를 실행하기 전에 이곳에 interrupt가 발생되었는지 확인한다. interrupt가 발생되었으면 자동으로 운영체제에게 CPU가 넘어간다.
인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
인터럽트: 느린 장치들에게 일을 시키고 CPU는 다른 일을 하다가, 느린 장치들이 일을 완료하면 CPU에게 인터럽트를 건다. 그러면 자동으로 CPU는 운영체제에 넘어가서 mode bit 이 0으로 바뀌고 운영체제가 CPU를 받아서 인터럽트 이후의 일을 수행할 수 있게 해 준다.
인터럽트 종류(누가 인터럽트를 발생시키는지에 따라 구분)
1) 소프트웨어 인터럽트(= trap)
소프트웨어들이 전반적으로 인터럽트 라인을 생성해서 인터럽트를 발생시키는 것을 말한다.
소프트웨어 인터럽트 종류
- Exception
: 프로그램이 오류를 범한 경우.
사용자 프로그램이 CPU를 받고 나서 본인에게 권한이 없는 기계어를 수행하려고 하면 CPU가 실행하기 전에 mode bit을 확인하여 0이 아닌 경우 trap이 걸리는 상황을 말한다.
- 시스템 인터럽트(= 시스템 콜)
: 프로그램이 커널 함수를 호출하는 경우.
사용자 프로그램이 특권 명령을 운영체제에게 수행하도록 부탁할 때 스스로 인터럽트를 발생시키는 것을 말한다.
2) 하드웨어 인터럽트
일반적인 인터럽트를 말한다.
EX. 타이머, 디스크 컨트롤러 등의 하드웨어가 인터럽트를 발생시킬 때
인터럽트 관련 용어
1) 인터럽트 벡터
인터럽트 종류별로 처리 루틴 주소를 가지고 있다. 일종의 주소에 대한 포인터라고 볼 수 있다.
2) 인터럽트 처리 루틴(= Interrupr Service Routine, 인터럽트 핸들러)
해당 인터럽트를 처리하는 커널 함수이다. 인터럽트 종류 별로 무슨 일을 해야 하는지 정의되어 있다.
I/O device contoroller
해당 I/O 장치 유형을 전담하는 작은 CPU이다.
실제 I/O 작업은 CPU가 device contoroller에게 부탁을 해서 이뤄진다. 그 작업이 끝나면 device contoroller가 CPU에게 인터럽트를 걸어 작업이 끝났음을 알려준다.
device controller가 I/O 작업을 수행할 때 수행되는 코드를 '펌웨어'라 부른다.
CPU는 하드웨어고, device contoroller도 하드웨어이다.
(운영체제는 소프트웨어다)
device driver(장치 구동기)
device driver는 소프트웨어이다. OS 코드 중 각 장치별 처리 루틴이다.
위에서 언급한 CPU가 device controller에게 I/O 작업을 하도록 부탁하는 과정에서 부탁을 담당하는 기계어를 칭하며, 컴퓨터 내부에서 CPU가 수행하는 코드이다.
출처: 운영체제와 정보기술의 원리(반효경 저)
'교육, 학습 > CS스터디_반효경 운영체제' 카테고리의 다른 글
운영체제 - DMA 사용이유(DMA와 CPU, 메모리의 관계), 저장장치 계층구조별 특징과 캐싱 (0) | 2022.01.04 |
---|---|
운영체제 - 동기식 입출력, 비동기식 입출력의 차이점, 공통점 (0) | 2022.01.03 |
운영체제 - 특권 명령과 일반 명령, mode bit, 모니터 모드, timer interrupt (0) | 2022.01.03 |
운영체제 - 운영체제(OS)란 2 (0) | 2022.01.03 |
운영체제 - 운영체제(OS)란 (0) | 2022.01.01 |
댓글