iOS Ellen

[운영체제] System Structure & Program Execution 1 본문

CS/운영체제

[운영체제] System Structure & Program Execution 1

Ellen61 2022. 11. 15. 14:07

 

이화여자대학교 반효경 교수님의 운영체제 강의를 바탕으로 운영체제 스터디에서 공부한 내용을 작성하였으며
해당 글의 지문들은 전부 직접 제작했습니다. [강의 링크]

 

컴퓨터 시스템 구조에 대해서 간단히 설명헤주세요.

Device controller에 대해서 설명해주세요.

Disk는 I/O 디바이스라고도 할 수 있다.

각각의 I/O 디바이스들은 해당 디바이스를 전담하는 일종의 작은 CPU를 가지고 있다. 이를 Device controller라고 한다.

제어 정보를 위해 control register(명령 담당) status register를 가진다.

I/O는 실제 device 와 Local buffer 사이에서 일어난다.

Device controller는 I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알림

Disk예시: 헤드를 어떻게 움직이고 어떤 데이터를 읽을지 등 Disk의 내부를 통제하는 것은 Device controller가 담당한다.

Local buffer에 대해서 설명해주세요.

I/O 디바이스들의 작업공간을 Local Buffer라 한다.

CPU의 역할과 내부 구조에 대해서 설명해주세요. (나중에 슬라이드로 또 나와요!)

  • 매 클럭마다 메모리에서 인스트럭션을 읽어서 실행하고 다음 인스트럭션을 읽어와서 실행한다. → CPU의 역할
  • registers: 메모리보다 더 빠르면서 정보를 저장할 수 있는 공간 registers

mode bit:

CPU에서 실행되는 것이 사용자 프로그램인지 운영체제인지를 구분해준다.

모드빗이 0이면 모니터모드(커널모드 OS 코드 수행) 사용자 프로그램 실행중일때는 1이다.

모드빗이 1일 때는 유저모드 제한된 인스트럭션만 실행할 수 있다. (보안상의 목적)

OS에서 사용자 프로그램으로 전환될때 모드빗을 0 또는 1로 변경해준다.

  • Interrupt line:

CPU 일처리에 관해서 설명해주세요.

굉장히 빠른 일처리를 한다(인터렉티브하게). 아주 짧은 시간 간격으로

Timer의 역할을 설명해주세요.

특정 프로그램이 CPU를 독점하는 것을 막기위한 장치(?)이다.

타이머에 할당된 시간동안 일처리를 한다(시간세팅). 세팅된 시간이 넘어가면(타이머 값이 0이 되면) interrupt를 발생시킨다(세팅 시간 끝났어!) 시간이 넘어가면 사용자 프로그램에서 운영체제로 시간이 넘어간다.

정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킨다.

매 클럭 틱 때마다 1씩 감소한다.

time sharing을 구현하기 위해 널리 이용된다.

타이머는 현재 시간을 계산하기 위해서도 사용된다.

값 세팅 → 타이머에게 넘겨줌 → 시간 끝남 → 운영체제가 가져감

프로그램이 I/O 장치를 읽어올때 내부 로직에 대해서 설명해주세요.

I/O의 일처리를 해야하면 사용자 프로그램이 자진해서 OS에게 CPU를 넘긴다.

모든 인스트럭션은 OS를 통해서만 실행된다.

사용자 프로그램이 사용중에 키보드에서 입력이 들어온다 → 아이오 버퍼에 들어옴 → 버퍼에서 작업이 끝나면 CPU에게 인터럽트를 건다. → 운영체제에게 제어권이 넘어감 → 왜 들어왔지? → 아까 요청했던 프로그램에서 발생한거구나! → 메모리 정보를 카피해준다. → 사용자 프로그램에게 CPU를 넘겨준다.

DMA Controller의 역할을 설명해주세요.

Direct Memory access

직접 메모리를 접근할 수 있는 컨트롤러이다.

메모리를 접근할 수 있는 장치는 CPU뿐이었는데 CPU와 DMA둘다 메모리에 접근할 수 있다.

I/O의 인터럽트를 직접 DMA 컨트롤러가 조율해서 올려줌(?)

교통정리를 메모리 컨트롤러에서 해줌!

System Call에 대해서 설명해주세요.

사용자 프로그램이 커널 함수를 호출하는 것을 말한다. 일반 함수 호출과는 다르다.

사용자 프로그램에서 CPU에 직접 인터럽트를 걸어서 모드빗이 변경 될 수 있다.

Interrupt에 대해서 설명해주세요.

프로세서(CPU, 중앙처리장치)의 즉각적인 처리를 필요로 하는 이벤트를 알리기 위해 발생하는 주변 하드웨어나 소프트웨어로부터 요청을 말한다.

인터럽트 당한 시점의 레지스터와 program counter를 저장한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.

Interrupt(넓은 의미의)

  • interrupt(하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트
  • trap(소프트웨어 인터럽트)
    • exception: 프로그램이 오류를 범한 경우
    • System call: 프로그램이 커널 함수를 호출하는 경우
  • 인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음
  • 인터럽트 처리 루틴(= Interrupt Service Routine, 인터럽트 핸들러): 해당 인터럽트를 처리하는 커널 함수

현대의 운영체제는 인터럽트에 의해 구동된다.


컴퓨터 하드웨어 적인 동작에 대한 설명하는 챕터이다.

CPU와 메모리로 구성된 것을 PC라고 한다.

컴퓨터 시스템 구조는 CPU와 Memory로 구성된 컴퓨터와 I/O 디바이스들로 구성되어있다.

CPU의 작업 공간이 메모리이다.

기계어를 하나씩 읽어서 태스크를 실행한다.


인터럽트란 무엇인가?

  • 각각 애들이 로지컬인지 하드웨어인지 모르겠다.
  • 하드웨어 인터럽트에 대해서 잘알아보자.

 

'CS > 운영체제' 카테고리의 다른 글

[운영체제] Introduction to Operating Systems  (0) 2022.11.09