[Operating Systems] Operating-System Operations

dandb3·2023년 3월 3일
0

Operating system

목록 보기
2/31
post-custom-banner
  • 처음 컴퓨터가 부팅될 때

    • initial(bootstrap) program이 먼저 실행된다.
    • 프로그램이 firmware 안의 computer hardware에 존재함.
    • bootstrap program이 operating-system kernel을 memory에 올림으로써 Operating System을 실행시킨다.
    • kernel이 system daemon을 실행시키면 이 system daemon이 다른 여러 services를 실행시키게 된다. Linux에서 처음으로 실행되는 system program은 "systemd"이다.
  • 위 단계가 모두 끝나고 나면, Event 발생 전까지 대기하게 된다.

  • interrupt의 두 가지 형태

    • hardware interrupt
      하드웨어에서 CPU에 interrupt를 건다. 자세한 내용은 앞에 나와있다.
    • trap(exception)
      • software-generated interrupt이다.
      • 2가지 case가 있다.
        • error가 발생 (division by zero, invalid memory access 등)
        • system call을 호출

Multiprogramming and Multitasking

  • multiprogrammed system에서 실행되는 program을 process라고 부른다.

  • 동시에 어떻게 프로그램을 실행시킬 수 있을까?

    • 여러 프로세스들을 메모리에 집어넣어서 동시에 존재하도록 한다.
    • 하나의 프로세스를 골라 실행시킨다.
    • I/O와 같은 동작이 시작되면, 기다리지 않고 다른 프로세스를 실행시킨다.(기존에는 그냥 놀고 있었음)
    • 이 과정이 계속 반복된다.
    • 만약 waiting이 끝나게 된다면 다시 그 프로세스가 CPU를 가지게 된다.
    • 이런 방식으로 실행이 필요한 프로세스가 하나 이상 존재한다면, CPU는 놀지 않을 것이다.
  • Multitasking

    • multiprogramming의 logical extension.
    • multiprogramming 처럼 CPU가 다수의 process들 사이를 switch하면서 동작하지만, 그 switch의 주기가 짧다. -> reponse time이 빠르다.
    • memory에 동시에 여러 process들을 올려 놓아야 한다 -> memory management 필요
    • 여러 process들 중에서 어느 것을 실행시킬 것인가? -> CPU scheduling
    • 등등..

Dual-Mode and Multimode Operation

  • operating system과 user는 hardware와 software 자원을 공유하기 때문에, operating system은 user에서 잘못되거나 악의적인 프로그램이 작동하지 않게 막아야 한다.

    • operating-system code와 user-defined code를 구별해야 한다.
  • two separate modes of operation : user mode & kernel mode

  • mode bit이 hardware에 추가되어 kernel(0), user(1)로서 mode를 구별한다.

  • user application이 실행되는 경우, system은 user mode 상태이다. 하지만 user application이 system call을 통해 operating system의 service를 요청한다면, system의 상태는 user -> kernel로 바뀌어서 system call에 해당하는 동작을 수행한다.

  • 부팅 부터의 동작
    hardware는 kernel mode로 시작 -> operating system이 메모리에 올라가고 실행됨 -> user application을 user mode로 실행 -> trap이나 interrupt가 발생 -> usermode에서 kernel mode로 전환.
    그러므로 operating system이 computer를 제어할 떄에는 항상 kernel mode이고, user program으로 control을 넘겨줄 때에는 user mode로 전환시킨다.

  • privileged instructions는 시스템 전반에 해를 끼칠 수 있기 때문에 kernel mode에서만 실행되도록 하며, 만약 user mode에서 이를 실행시키고자 하면 바로 trap을 발생시켜 operating system이 이를 처리하도록 한다.

  • mode가 2개보다 더 많은 system도 존재한다.

  • trap도 interrupt vector에서 처리된다.

  • error로 인한 trap은 user-requested abnormal termination과 같이 처리된다.

Timer

  • user program이 무한루프를 돌거나 system service를 call하고 return 하지 않아서 operating system에 control이 넘어오지 않을 수도 있다. 이럴 때 timer를 이용한다.

  • timer ?

    • 정해진 주기 이후에 computer에 interrupt를 발생시킨다.
    • variable timer는 fixed-rate clock과 counter로 구현된다.
      • operating system이 counter를 설치함.
      • every time the lock ticks, counter는 줄어든다.
      • counter가 0에 도달하면 interrupt가 발생한다.
      • ex) 10-bit counter + 1-milisecond clock -> 1ms ~ 1024ms 사이의 주기를 가지는 interrupt 발생 가능.
  • user에게 CPU를 넘겨주기 전에 operating system은 timer가 설정되었는지 확인한다. timer로 인한 interrupt 발생 시 operating system으로 바로 control이 옮겨가고, operating system은 fatal error인지 다시 program에게 시간을 줘야 하는지 결정한다.

  • timer의 내용을 변경하는 명령들은 privileged이다.

profile
공부 내용 저장소
post-custom-banner

0개의 댓글