[운영체제] 운영체제 반효경 교수님 2017년 - 2. 컴퓨터 시스템의 구조

June·2021년 4월 26일
0

운영체제의 종류

운영체제란 무엇인가?

커널은 부팅될 때 메모리에 올라가는 부분을 말한다. 운영체제를 설치하면 붙은 파일을 복사하는 프로그램 같은 것들은 커널과는 다르지만 넓게 보면 운영체제에 포함된다.

운영 체제의 목적

메모리 공간을 어느 프로그램에는 충분히 주고 어떤 프로그램에게는 적게 주거나 아예 메모리 공간에서 쫓아낼 때도 있다.

운영 체제의 분류

동시 작업 가능 여부

사용자의 수

사용자가 여러 명이 되면 보안 등 여러가지 이슈들이 생긴다. 한 사용자가 파일을 보고 있을 때 다른 사용자는 그 파일을 볼 수 없게 하는 등.

처리 방식

우리가 일반적으로 사용하는 시스템이다. 사용자의 입장에서는 1대1로 사용하는 느낌을 받는다.

실시간은 우리가 사용하는 일반적인 시스템이 아니다. 데드 라인을 넘기면 아주 치명적인 문제가 발생하는 시스템이다. soft realtime system은 동영상 재생할 때 사용한다. 동영상을 재생할 떄 초당 24프레임을 가져와서 디코딩해야하는데, 그것을 하지 못하면 동영상이 끊긴다. 하지만 큰 문제가 발생하지는 않는다.

몇 가지 용어

Multitasking: 여러 작업을 동시에 하는 것
Multiprogramming: 메모리의 측면에서 강조한 것이다. 여러 프로그램이 메모리를 공유해서 쓰는 것.
Time sharing: cpu 쪽을 좀 더 강조한 것

운영 체제의 예

유닉스는 서버를 위한 운영체제다.

개인사용자용 운영체제였다.

운영 체제의 구조

운영체제 과목의 수강 태도

컴퓨터 시스템 구조

프로그램을 실행시키면 메모리에 올라가서 프로세스가 된다. 각 IO 장치들에는 IO 장치들을 전담하는 작은 CPU들이 있다. 이를 컨트롤러라고 부른다. 이 컨트롤러는 실제로 기계어를 처리한다. 기계어를 처리하기 위해서는 메모리가 필요한데 컨트롤러에는 이를 위해 로컬 버퍼가 달려있다.

CPU가 운영체제의 코드를 실행시킬 때는 상관없지만 사용자의 프로그램을 실행할때는 조심해야한다. 자원을 독점하려는 등 악의적인 코드가 있을 수도 있기 때문이다. 따라서 CPU는 코드가 운영체제의 코드인지 사용자의 코드인지를 구분해야한다. 이를 구분하기 위해 mode bit을 사용한다.

Mode bit

사용자 프로그램을 실행할 때는 mode bit을 1로 바꾼다. 이때는 특권 명령 (위험한 명령)은 실행하지 못한다. 특권 명령을 실행하려하면 자동적으로 cpu가 운영체제에게 넘어간다.

interrupt 혹은 exception으로 운영체제에게 권한이 넘어가게되는데, 컴퓨터 구조 그림을 보면 interrupt line이라는 것이 있다. cpu는 연산을 한번하고 나서 interrupt line을 봐서 interrupt가 온게 있는지 확인한다. interrupt가 들어오면 다음 연산을 하지 않고 권한이 운영체제에게 넘어간다.

cpu 옆에는 register가 있는데, cpu 연산의 결과를 저장하기 위해 작은 공간이다. register에는 program counter라는 register가 있다. program counter는 다음번에 실행할 메모리의 주소를 가지고 있다.

Timer

cpu의 독점을 뻇는 것은 timer가 하는 것이다. cpu에게 넘길 때 timer를 설정하고, 시간이 되면 timer가 interrupt를 걸어준다.

인터럽트 (Interrupt)

프로그램 A가 cpu를 차지하다가 timer가 interrupt를 걸면 cpu의 독점을 막기 위해서 운영체제에게 넘어가고, 운영체제가 큐에 줄 서 있는 프로그램을 실행한다. 또한 IO의 파일을 읽어올 때도 각 장치의 controller에 기계어로 부탁을 한다 (특권 명령). 따라서 사용자가 만약 IO에 관한 것을 사용하고 싶을 때는 운영체제에 부탁을 해야한다. 이를 시스템콜이라 한다.

시스템콜 (System call)

사용자 프로그램이 실행되다가 IO가 필요할 때 스스로 특권 명령을 이용해서 가져오지 못하기 때문에 운영체제에 요청을 해야한다. 따라서 스스로에게 자신의 코드를 이용해서 interrupt를 건다. 이렇게 소프트웨어가 스스로 interrupt를 거는 것을 software interrupt라고 부르고, IO 장치들이 interrupt 거는 것을 hardware interrupt라고 부른다.

인터럽트 (Interrupt)

소프트웨어가 interrupt 거는 것을 trap이라 부른다.

Device Controller

device driver는 운영체제 내의 코드로 cpu가 device controller에게 IO를 부탁하는 기계어다. device controller는 펌웨어라는 기계어를 이용한다.

중간 질문

운영체제에게 CPU가 넘어가는 경우?

  • 여러 가지 경우가 있지만 공통적으로 interrupt line을 세팅하는 경우다. interrupt line은 누가 설정하냐에 따라 다르다. 하나는 hardware 중심이고 하나는 software 중심이다. 그 중에는 시스템 콜이라고 본인의 코드로는 실행 못하기 때문에 운영체제에게 cpu를 넘겨주는 것이 있다.

  • 이처럼 인터럽트마다 해야하는 일이 다른데 인터럽트 벡터에서 인터럽트 종류마다 실행해야할 코드의 위치를 가지고 있다. 타이머 인터럽트일때는 x, 하드웨어 인터럽트일때는 y.. 이런 식이다.

  • CPU가 넘어가는데는 두 가지 경우가 있다. Timer에 의해 CPU를 빼앗기는 경우 또는 IO는 긴 작업이니 어짜피 쓸 수 없어서 CPU를 내놓는 경우.

동기식 입출력과 비동기식 입출력

동기식은 IO 요청후 그 IO가 끝나고 난후 사용자 프로그램이 다시 실행되는 것이고 비동기는 IO에 관계없이 그냥 바로 실행시키는 것

비동기식에서는 IO와 무관하게 다시 바로 requesting process로 돌아가는 것을 알 수 있다. 비동기식이 말이 안되는 것처럼 보이지만, 예를 듥어 Read IO일때는 Read가 되지 않아도 그 다음에 할 수 있는 것이 있고, Write일때는 결과를 확인 안하고 write를 보내는 것이다.

DMA (Direct Memory Access)

CPU의 입장에서는 너무 자주 interrupt가 걸리면 부담이 된다. 그래서 메모리에 직접 접근할 수 있는 장치를 따로 둔 것이다. DMA가 직접 메모리에 써주는 것이다.

서로 다른 입출력 기계어

좌측은 메모리에 접근하는 기계어와 IO에 접근하는기계어가 따로 있는 방식이다. 우측은 장치에도 주소를 메겨놓고 메모리에 접근하듯이 장치에 접근하는 방식이다.

저장장치 계층 구조

0개의 댓글