Untitled

CPU

  • 메모리에 올라와있는 기계어를 처리
  • instruction set - 기계어 정의 집합, 보통 4byte, 0과 1의 조합
  • PC(Program counter)라는 레지스터가 가리키고 있는 메모리 주소를 실행시킴
  • CPU에서 instruction을 실행하면, 다음 위치의 메모리 주소가 PC에 올라옴.
  • 기본적으로는 순차적으로 프로그램을 실행
  • if, 반복문 등을 실행할 때는 memory jump를 함. jump instruction이 있음.

Interrupt

  • 인터럽트 다한 시점의 레지스터와 program counter를 save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다
  • 인터럽트 종류
    • Interrupt (하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트, 디바이스 controller가 발생시킨 인터럽트. 일반적인 인터럽드라하면 하드웨어 인터럽트임
    • Trap(소프트웨어 인터럽트)
      • Exception : 프로그램이 오류를 범한 경우
      • System call : 프로그램이 커널 함수를 호출하는 경우
  • 인터럽트 종류마다 실행해야 할 함수가 미리 정의되어 있다.
  • 인터럽트 벡터 : 인터럽트 주소와 처리 루틴 주소를 가지고 있음
  • 인터럽트 처리 루틴(Interrupt Service Routine) : 해당 인터럽트를 처리하는 커널 함수

System call

  • 사용자 프로그램이 운영체제에게 I/O 작업을 해야할 때 system call을 이용해 요청함
  • CPU의 제어권이 사용자 프로그램에서 OS로 넘어감

Timer

  • timer가 인터럽트를 가지고 있음
  • OS가 사용자 프로그램으로 제어권을 넘겨줄 때 mode bit을 1로 바꿔서 넘겨줌
  • 사용자 프로그램이 CPU를 계속 사용할 때(ex- 무한루프) 타이머에 시간셋팅을 해 할당된 시간이 끝나면 타이머가 CPU에게 인터럽트를 걸어 제어권을 다시 OS에게 넘겨줌

I/O

  • device controller
  • local buffer : IO 디바이스의 데이터를 저장
  • CPU에 정보를 전달할 때 interrupt를 걸어서 이용해 호출

Untitled

동기식 입출력(Synchronous I/O)

  • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램으로 넘어감

비동기식 입출력(Asynchronous I/O)

  • I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
  • 두 경우 모두 I/O 완료는 인터럽트로 알려줌

DMA (Direct Memory Access) Controller

  • 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
  • CPU 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송

저장장치 계층 구조

Untitled

Q. SSD???

프로그램의 실행(메모리 load)

Untitled

프로그램은 실행파일 형태로 하드디스크에 저장되어 있다. 실행파일을 실행시키면 메모리로 올라가 프로세스가 된다. 물리적인 메모리에 바로 올라가는 것이 아니도 virtual memory 단계를 거친다.

프로그램을 실행시키면 그 프로그램만의 독자적인 주소공간(Address space)가 만들어진다.

  • code : 프로그램 실행코드
  • data : 변수, 자료구조를 담고 있다
  • stack : 함수를 호출하거나 리턴할 때 쌓는 곳

컴퓨터를 켰을 때 커널은 항상 메모리에 올라가있다.

프로세스의 코드가 모두 물리적인 메모리에 올라가는 것이 아니고 진짜 실행되는 부분만 올라간다.

커널 주소 공간의 내용

Untitled

사용자 프로그램이 사용하는 함수

  • 사용자 정의 함수 : 자신의 프로그램에서 정의한 함수
  • 라이브러리 함수 : 자신의 프로그램에서 정의하지 않고, 갖자 쓴 함수, 자신의 프로그램의 실행 파일에 포함되어 있다
  • 커널 함수 : 운영체제 프로그램의 함수, 커널 함수의 호출 = 시스템 콜

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

프로세스  (0) 2022.03.15
컴퓨터 내부의 언어체계  (0) 2022.01.18

+ Recent posts