ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 시스템 구조와 프로그램 실행
    Computer Science/OS 2022. 12. 29. 14:24

    https://core.ewha.ac.kr/assets/publish/C0101020140314151238067290

     

    반효경 [운영체제] 4. System Structure & Program Execution 2

    설명이 없습니다.

    core.ewha.ac.kr

     

    System Structure & Program Execution 2

     

    컴퓨터 시스템 구조, 인터럽트(Interrupt), 동기식 입출력과 비동기식 입출력, 시스템콜(System Call), DMA(Direct Memory Access), 서로 다른 입출력 명령어, 저장장치 계층 구조, 프로그램의 실행(메모리 load), 커널 주소 공간의 내용, 사용자 프로그램이 사용하는 함수, 프로그램의 실행


    컴퓨터 시스템의 구조

    • interrupt가 들어왔는지 체크
      • 만약 있다면, CPU제어권이 운영체제에게 자동으로 넘어감
    • CPU는 메모리에 기계어를 읽어와, 매순간 기계어를 처리
      • CPU는 프로그램 카운터에서 주소를 읽어옴
      • 그 다음, 프로그램 카운터는 다른 주소를 가르키게 됨

    → CPU는 '빠른 일꾼' 

    • CPU 안에 mode bit
      • mode bit 0 → 모든 명령 실행 가능
      • mode bit 1 → 사용자 프로그램이 CPU 실행권을 가짐 (한정 된 실행만 가능)

     

    입출력 (I/O)

    • 컴퓨터 시스템이 컴퓨터 외부의 입출력 장치들과 데이터를 주고 받는 것
    • 종류
      • 동기식 입출력 (synchronous I/O)
      • 비동기식 입출력 (asynchronous I/O)

     

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

    I/O 영역은 커널을 통해서만 접근 가능하다. 

     

    1. 동기식 입출력 (synchronous I/O)

    • 어떤 프로그램이 입출력을 요청 했을 떄, 입출력 작업이 완료된 후에야 그 프로그램이 후속 작업을 수행할 수 있는 방식
      • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
        → 입출력이 진행되는 동안 그 프로그램의 다음 명령을 수행하지 않고 기다림 
        • 구현방법1
          • I/O가 끝날 때까지 아무일도 안하고 기다림 → CPU를 낭비시킴
          • 매시점 하나의 I/O 만 일어 날 수 있음 → I/O 낭비
        • 구현방법2 ( CPU의 효율적인 사용을 위해)
          • I/O 요청한 다른 프로그램에게 CPU를 넘겨줌
            예시) A 프로그램이 입출력을 수행하는 동안 B에게 CPU를 양도
          • 또 다른 프로세스에게 넘겨줌
          • 해당 프로그램에게서 CPU를 빼앗음
          • I/O 처리를 기다리는 중에 그 프로그램을 줄 세움
          • 다른 프로그램에게 CPU를 줌
          • 언젠가 끝나면, 인터럽트를 걸음
            → 동기성을 보장하기 위해 장치마다 큐를 두어 요청된 순서대로 처리할 수 있도록 한다

    2. 비동기식 입출력(asynchronous I/O)

    • I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
    • 예시) A 프로그램이 실행 중, 디스크에서 어떠한 데이터를 읽어오라는 명령을 만남
      → A 프로그램이 시스템 콜을 통해 CPU에 소프트웨어 인터럽트 발생
      → CPU는 A 프로그램 멈춘 후 상태 저장하고 처리해야 할 커널의 루틴으로 이동
      → CPU는 컨트롤러에게 입출력 연산 요청
      → 컨트롤러는 A가 요청한 데이터를 자신의 로컬버퍼로 읽어옴
      → A는 봉쇄상태로 표시하여 다시 할당 받지 못하게 함
      → CPU를 다른 프로그램 B에 할당하여 계속 일을 할 수 있도록 함 

    → 두 경우 모두 I/O가 끝났다는 것은 인터럽트로 알려줌

     

    일반적으로 운영체제에게 입출력을 요청할 경우, 동기식 입출력을 사용

    → 장치별로 입출력 처리를 기다리는 프로세스를 줄 세워 동기성을 보장함

    DMA(Direct Memory Access)

    컨트롤러가 CPU에게 인터럽트를 발생 (CPU외의 장치가 메모리의 데이터에 접근하기 위해서는 인터럽트를 발생시켜야만 한다.)

    → CPU는 컨트롤러의 로컬버퍼와 메모리사이에서 데이터를 옮김

     

    모든 메모리 접근 연산이 CPU에 의해서만 이뤄질 경우, 인터럽트에 의해 CPU는 업무방해를 받게 됨

    → CPU 사용의 효율성이 떨어지는 문제점이 발생

     

    따라서, CPU이외에 메모리 접근이 가능한 장치 DMA가 생김

     

    • 메모리를 접근할 수 있는 장치
    • 빠른 입출력 장치(인터럽트를 더 빈번히 걸음)를 메모리에 가까운 속도로 처리하기 위해 사용
    • DMA가 대행함으로써 CPU는 원래 하던 작업을 멈추고 인터럽트를 처리할 필요없이 device controller가 device 의 buffer storage의 내용을 block 단위로 직접 전송
    • 바이트 단위가 아니라, block 단위로 인터럽트를 발생 시킴

    저장장치 구조

    • 컴퓨터 시스템을 구성하는 저장장치
      • 주 기억장치
        • 보통 메모리라고 부름
        • RAM(전원이 나가면 저장되었던 내용이 모두 사라져버리는 휘발성)
      • 보조기억장치
        • 비 휘발성
        • 마그네틱 디스크 주로 사용
        • 용도
          1. 파일 시스템용
          2. 스왑 영역(swap area) → 메모리의 연장 공간
            • 프로그램 수행에 반드시 필요한 부분만 메모리에 올려놓고, 그렇지 않은 부분은 디스크 스왑영역에 내려놓음 → 스왑 아웃(swap out)
            • 하드 디스크가 가장 널리 사용

    저장장치 계층 구조

    ←——————————————————————————————>

    빠른 저장장치                                                               느린저장장치

    레지스터 > 캐시 메모리 > 메인 메모리 > 마그네틱 디스크 > 광디스크

     

     

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

    프로그램은 실행 파일 형태로 저장이 되어있음

    실행 시, 메모리로 올라가서 프로세스가 됨

     

    각각의 프로그램마다 주소 공간을 별도로 가지며, 프로그램마다 독자적으로 존재하는 이와 같은 주소 공간을 가상메모리(virtual memory) 혹은 논리적 메모리(logival memory) 라고 부른다.

     

    virtual memory

    • A 프로그램 실행
    • A 프로그램의 자기 자신만의 address space형태로 주소 공간이 생김 → code, data, stack 형태
      • code: CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되어있는 부분
      • data: 전역변수 등 프로그램이 사용하는 데이터를 저장하는 부분 
      • stack: 코드가 함수구조로 되어있어서, 함수 형태로

    물리적인 메모리 낭비를 막기 위해, 당장 필요한 A 에 해당하는 코드만 physical memory에 올려놓음

    사용하지 않을 시엔, 다시 쫓아냄

     

    하드디스크

    • file system: 전원이 나가도 유지되는 용도
    • swap area: 메모리 연장공간으로서 사용

     

    커널 주소 공간의 내용

    • code
      • 커널코드
        • 시스템콜, 인터럽트 처리 코드
        • 자원 관리를 위한 코드
        • 편리한 서비스 제공을 위한 코드
    • data
      • cpu
      • mem
      • disk
      • 하드웨어를 관리하기 위해서 하드웨어 종류마다 자료구조를 하나씩 만들어서 관리함
      • PCB → 각 프로세스마다 PCB가 만들어져서 관리됨

        PCB? 어떤 프로그램이 CPU를 얼마나 썼는지, 다음에 누구에게 얼마나 메모리를 줘야할지 등에 대해 각프로그램마다 관리하고 있는 자료구조
    • stack
      • 운영체제도 함수코드로 짜져있기 되어어 stack영역이 존재


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

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

     

    프로세스의 두 가지 실행 상태

    하나의 프로세스가 시작되어 수행을 완료하기까지는 프로세스 자신의 주소 공간에 있는 코드만 실행되는 것이 아니라 커널의 주소 공간에 있는 코드도 실행된다.

     

    즉, 시스템 콜을 통해 실행되는 것이 프로세스 A의 코드가 아닌 운영체제 커널의 코드 이지만, 프로세스 A가 실행 상태에 있다고 말함

    → 이러한 상태를 프로세스 A가 커널모드에서 실행 중 이라고 말함 

    댓글

Designed by Tistory.