[OS] 2. System Structure, program execution

didio·2023년 3월 1일
0

OS

목록 보기
2/4

컴퓨터 구조 간단하게 알아보기

  • memory : cpu의 작업 공간
  • cpu : 매 시간마다 메모리에 접근하여 메모리의 instruction을 읽어 실행한다.
    • cpu 구성 → register,mode bit,interrupt line
    • interrupt line
      • interrupt 신호를 감지한다.
    • mode bit : 운영체제 실행 프로그램인지, 사용자 실행프로그램인지를 구분한다.
  • I/O device : 키보드,마우스
    • 키보드를 입력하면 전달된다. (input device)
    • 컴퓨터 : 처리결과를 내보낸다. (output device)
    • i/o장치들은 device controller에 의해 관리된다.
    • disk : 입력을받아들이고 buffer에 저장해둔다.
  • timer
    • 특정 프로그램이 cpu를 독점하는 것을 막는다.
    • 시간을 할당하여 cpu에서 특정 시간을 정해준다.
    • 시간이 지나면 cpu에서 interrupt를 건다. cpu는 다른 프로그램으로 넘어간다.
  • DMA controller
    cpu가 일하고 있을때 키보드 입력이 발생하여 또다른 interrupt가 발생한다면? cpu가 interrupt가 너무 많이 걸린다.
  • 이런 상황을 방지하기 위해 DMA controller 가 존재한다.
  • cpu가 일을 하고 있을 때, lcoal buffer에 데이터가 쌓이면 DMA가 메모리에 복사하여 한번만 cpu에서 interrupt를 걸어준다.
  • DMA는 메모리에 접근할 수 있다.
  • 이때 memory controller는 DMA와 CPU의 접근을 관리해준다. 동시에 접근하지 않도록!

Device controller

  • I/O 장치유형을 관리하는 작은 cpu이다.
  • local buffer을 가진다. 이곳에 데이터를 담는다. 담긴 데이터는 제어 레지스터에 의해 출력된다.
  • cpu가 local buffer에 접근하여 읽고, 메모리에 복사를한다.
  • i/o작업이 끝났음을 알려주는 역할을 한다. i/o장치가 일을 끝내면 cpu에게 interrupt를 건다.

I/O 수행

사용자 프로그램은 한정된 instruction만을 수행할 수 있다. 사용자 프로그램은 어떻게 I/O를 할까?
→ 시스템 콜 (운영체제에게 I/O를 요청한다.)
사용자 프로그램에서 시스템 콜을 발생시키면 의도적으로 interrupt line을 생성하여 cpu는 하던일을 멈추고 사용자 프로그램으로 넘어간다.

  • os는 I/O 올바른 요청인지 판단하여 확인 후 수행한다.

Interrupt

cpu는 program counter register가 가리키는 메모리 주소에서 instruction을 읽어와 일을 수행한다.
interrupt가 있다면 cpu 제어권이 OS로 넘어가는데, 운영체제는 interrupt마다 처리해야할 함수가 저장되어 있다.
이를 인터럽트 벡터라고한다.
인터럽트 벡터에 있는 번호로 접근하여 알맞는 주소의 함수로 접근한다. 이과정을 인터럽트 처리 루틴이라고 한다.

하드웨어 인터럽트 : 하드웨어가 발생시킨 인터럽트
소프트웨어 인터럽트 (trap)

  • Systemcall : 사용자 프로그램이 필요에 의해서 운영체제에게 도움을 요청한다.
  • Exception: 프로그램이 무란 루프나, 운영체제의 메모리에 접근하려거나 0으로 나누는 등의 오류를 범하는 경우에 발생한다.

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

메모리는 physical memory, virtual memory구성 된다.

커널 주소 공간내용

code

커널에는 어떤 코드가 존재하는가

  • 자원 관리를 위한 코드
  • 편리한 서비스 제공을 위한 코드
  • 시스템콜이나 인터럽트를 처리하는 코드

data

  • 하드웨어를 관리하기 위한 자료구조들
  • process들을 관리하는 자료구조들
    • 각각 process마다 메모리를 가지므로 각각 관리가 필요 (PCB)

stack

  • process A의 커널 스택
  • process B의 커널 스택

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

함수는 세가지 정도가 존재한다. 함수를 만들면 실행 함수에 함수들이 생

  • 사용자 정의 함수
    • 자신이 직접 작성한 함수.
  • 라이브러리 함수
    • 누군가가 만든 유용한 함수.
    • 자신의 프로그램의 실행 파일에 코드 자체가 포함되어있다.
  • 커널 함수
    • 운영체제 프로그램 함수
    • 커널함수 호출 = 시스템콜
    • 커널 함수는 자신의 프로그램 실행파일에 존재하지 않고 시스템콜을 통해 interrupt line을 설정하여 cpu제어권을넘겨주어야한다.
profile
🌈프론트엔드 공부 기록

0개의 댓글