ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2-1. System Structure & Program Execution 1
    OS/운영체제 강의정리 2021. 12. 30. 18:55

    2-1. System Structure & Program Execution 1

    컴퓨터 시스템 구조, Mode bit, Timer, Device Controller, 입출력(I/O)의 수행, 동기식 입출력과 비동기식 입출력, 시스템콜(System Call), 인터럽트(Interrupt)

     

    컴퓨터 시스템 구조

    register : CPU안에 메모리 보다 더 빠르면서 정보를 저장할 수 있는 더 작은 공간

    mode bit : 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호장치 필요 (CPU에서 실행되고있는것이 운영체제인지, 사용자 프로그램인지 구분해주는것)

    1 사용자 모드 : 사용자 프로그램 수행

    0 모니터 모드 (커널모드, 시스템 모드) : OS코드 수행 (보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 ‘특권명령’으로 규정

    Interrupt line : CPU가 프로그램 A를 실행중인데, 경우에 따라 키보드에서 뭘 읽어오거나 디스크에서 읽어오거나 이런 I/O디바이스를 접근 해서 써야한다면, 디바이스 컨트롤러한테 일을 시켜서 하게됨... 즉 CPU는 굉장히 빠른 일꾼인데, 빠른속도를 이용해 쉬지않고 일만함..!! instruction 처리하다가 Interrupt 라인 체크

     

    인터럽트

    • 인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
    • 넓은의미 :
      • Interrupt(하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트
      • Trap (소프트웨어 인터럽트) : Exception(프로그램이 오류를 범한경우), System call(프로그램이 커널 함수를 호출하는 경우)
    • 인터럽트 관련 용어
      • 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
      • 인터럽트 처리 루틴(인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수
      • 현대의 운영체제는 인터럽트에 의해 구동된다!

    Timer : 특정프로그램이 CPU를 독점하는 것을 막기위함.

    Device controller :

    • 해당 I/O장치 유형을 관리하는 일종의 작은 CPU
    • 제어 정보를 위해 control register, status register를 가짐
    • local buffer를 가짐(일종의 data register)

    device controller(장치제어기) : 각 장치를 통제하는 일종의 작은 CPU(Hardware)

    device driver(장치구동기) : OS코드 중 각 장치별 처리 루틴(Software)

    DMA controller(direct Memory Access) : 메모리를 CPU도 접근할 수 있고, DMA도 접근할 수 있음

    • 왜필요하는가 ? CPU의 interrupt당하는 횟수를 낮추기위해

    I/O의 수행 : 모든 입출력 명령은 특권 명령

    • 사용자 프로그램은 어떻게 I/O를 하는가?
      • 시스템콜 (사용자 ) : 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는것!
        • 사용자 프로그램을 실행하다보면 함수호출을 하는 곳이 있지, 처음에 프로그램이 CPU에서 메인함수를 실행할 때 메인함수에 해당되는 인스트럭션을 실행할것, 그 함수가 다른 함수를 호출 하면 어딘가로 점프를 하겠지 CPU에서 인스트럭션을 순차적으로 수행하다가, 함수호출이나 또는 제어구조에 해당하는 If문을 만족안하거나 하면 인스트럭션의 메모리 위치를 점프할것 내 프로그램 안에서 함수호출 하는것은 이안에서 메모리 주소를 바꾸는건데 내 프로그램이 실행되다가 I/O요청을 하기위해 운영체제 함수를 호출하는것
        • 프로그램이 직접 Interrupt line을 셋팅하는 인스트럭션을 실행함
      • trap사용하여 인터럽트 벡터의 특정위치로 이동
      • 제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동
      • 올바른 I/O 요청인지 확인 후 I/O수행
      • I/O 완료 시 제어권을 시스템콜 다음 명령으로 옮김
      사용자프로그램은 본인이 직접 I/O에 접근을 못하게 막아놓음 : 스스로 운영체제에 CPU를넘겨주고 운영체제가 I/O가 해야할 것 넘겨주는것

    그림에 대한 설명 :

    좌측이 일반적인 컴퓨터 다른말로는 호스트로 부름 우측이 I/O디바이스들 데이터를 (컴퓨터안에 집어넣는 인풋이나, 호스트에서 처리된 결과를 내보내는 아웃풋)디바이스들을 전담하기위한 디바이스 컨트롤러들이 붙어있고 이 디바이스컨트롤러들은 I/O디바이스와 I/O디바이스를 통해서 어떤 데이터를 읽거나 쓰거나 하며 작업공간인 local buffer에다가 저장하게됨 CPU한테 뭔가를 알려주고싶을때는 컨트롤러가 인터럽트라는것을 걸어서 내가 너에게 무언가 전달할게있다 라고 알려주게되고 CPU는 매순간 메모리 어딘가에 올라와있는 기계어를 처리하게 된다(인스트럭션)

    CPU는 메모리안에 레지스터를 통해 (메모리주소를 가리키고있는 즉 프로그램카운터레지스터) CPU가 그 인스트럭션을 수행하고, 그 다음에 메모리를 가리키고있던 프로그램카운터레지스터는 다음 주소를 가리키게된다. 프로그램이 항상 순차적으로만 되는건 아님. 함수호출이나 if문같은~~ 다른 메모리주소로 점프해서 인스럭션을 실행할 수 있다.

    CPU는 아주 빠른 일꾼이고, 프로그램카운터라는 레지스터가 가리키고있는 메모리에서 인스턱션을 읽어서 수행하는 것이다.

    인스트럭션을 수행 후 인터럽트가 들어온게 있는지 체크, 만약 인터럽트가 들어왔다면, 지금하던 작업을 잠시 멈추게되고, CPU를 누가 쓰고있든 상관없이 CPU제어권이 운영체제에 넘어가게됨, 왜 인터럽트가 걸렸는지는 운영체제 안에 커널함수로 정의가 되어있음. 실제 해야할 일이 인터럽트 핸들러 인터럽트 종류별로 함수별로 점프하게 해주는것이 인터럽트 벡터임.

    CPU안에 Modebit이 0이냐 1, 0은 CPU가 실행할 수 있는 모든 집합을 수행할 수 있고, 1이면 한정된 기계어들만 실행할 수 있음

    I/O디바이스는 모드빗이 0일때만 즉 운영체제일때만 수행할 수 있게 막아놓음.

    I/O디바이스가 서비스를 요청할 때에는 시스템콜을 부름 운영체제에 있는 함수를 사용자 프로그램이 요청하는것임(트랩!)

    타이머로 인터럽트를 걸 수도 있음.

     

    <강의외정리>

    이중모드를 통한 하드웨어 보호에 큰역할을 담당하는데 [입출력장치보호, 메모리 보호, CPU보호] 이렇게 3가지로 나눌 수 있다.

    1. 입출력장치보호 : 사용자의 잘못된 입출력 명령어 제어 

    다른 사용자와 동시 사용하는 것을 막기 위해 입출력 명령을 특권 명령어로 하여 IN, OUT이라는 명령어 존재함. 입출력 장치 사용하기 위해서 운영체제에 입출력을 하고 싶다는 것 요청하고 관리자 모드로 운영체제가 입출력을 실행시켜주면 일이 끝난 후 사용자모드로 돌아오게 됨. 만약 다른 사용자가 사용할 경우 올바른 요청이 아니므로 운영체제가 거부함

     

    2. 메모리 보호 : 다른사용자가 메모리 또는 운영체제 영역 메모리를 접근할 경우를 막기 위한 작업. 특히 해킹에 관련된 부분이 많이 작용을 함. 이를 제어하기위해 MMU(Memory Management Unit)을 두어 다른 메모리 영역 침범하는 것을 감시하는 장치를 놓는다. 각 사용자마다 할당받을 수 있는 메모리 공간의 영역을 정하여 다른 사용자는 침범을 할 수 없에 만든다. 이러한 설정은 특권명령어로 운영체제만 바꿀 수 있다.

     

    3. CPU보호 : 한 사용자가 CPU시간을 독점하는 것을 막는다. CPU시간을 독점하게 되면 다른 사용자는 프로그램 실행이 불가하므로 Timer를 두어 일정 시간 경과시 타이머 인터럽트를 발생시켜 운영체제가 다른 프로그램으로 강제 전환하는 방법을 취한다. 

     

    -참고-

    https://copycode.tistory.com/47?category=740133

    댓글

Designed by Tistory.