[운영체제] 1주차 스터디

톰톰·2023년 9월 15일
1

질문

  1. 운영체제는 무엇이고 어떤 역할을 수행하는지 설명해주세요.

    컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어들과 하드웨어를 연결하는 소프트웨어

    • 사용자 및 응용 프로그램이 하드웨어적인 부분을 몰라도 편리하게 쓸 수 있는 인터페이스를 제공
    • 컴퓨터 자원이 효율적으로 형평성있게 관리될 수 있도록 서비스를 제공
      • CPU 스케줄링
      • 메모리 관리
      • 디스크 스케줄링
      • 인터럽트, 캐싱
  2. 시분할 시스템에 대해서 설명해주세요. (time sharing → CPU 측면을 강조)

    여러 프로세스 혹은 여러 사용자가 컴퓨터 자원을 일정 시간씩 나누어서 쓸 수 있게한 시스템

    • 특히 CPU 자원을 여러 프로세스가 나누어 사용하는 것을 말한다.
    • CPU 스케줄링 방식 중 라운드로빈 방식처럼 각 프로세스에게 동일한 할당시간을 부여하여, 번갈아서 할당된 시간만큼만 CPU를 사용하는 방식이다.
    • CPU는 초당 10억회 이상 돌아가는 빠른 장치이므로, 여러 사용자 혹은 여러 프로그램이 번갈아 CPU를 사용한다고 해도 인지하지 못한다.
  3. 다중 프로그래밍 시스템(multi-programming system)에 대해서 설명해주세요. (메모리 측면을 강조)

    다중 프로그래밍이란 컴퓨터에서 여러 작업을 동시에 수행하는 것과 관련된 개념

    • 주로 메모리에 여러 프로그램이 동시에 올라가 있는 상황을 의미한다.
    • 컴퓨터가 부팅되면 커널이 전원이 꺼질 때까지 메모리에 상주하게 되고, 그 외의 부분을 실행되는 프로세스들이 나누어 사용하게 된다.
    • CPU 제어권을 프로그램A가 갖게되면, CPU의 Program Counter 공간에 프로그램 A의 메모리 영역 주소가 담기게 되어 작업을 수행하게 된다. 제어권이 다른 프로세스에 넘어가면 PC공간이 바뀐 프로세스의 메모리 영역 주소로 다시 할당되어 또 거기에 있는 기계어를 수행하는 식으로 진행된다.
  4. 대화형 시스템(interactive system)에 대해서 설명해주세요.

    일괄배치 시스템과 반대되는 개념의 시스템

    • 과거 배치 시스템은 프로그래밍한 결과를 펀치카드에 구멍으로 뚫어놓고 전산소에 가져가 한꺼번에 돌랴달라고 요청
    • 현재 대부분의 운영체제는 프로그래밍한 결과를 컴파일해서 즉시 확인할 수 있는 시스템 환경을 가짐
  5. 다중 처리기 시스템(multi-processor system)에 대해서 설명해주세요.

    프로세서란 컴퓨터에서 연산을 담당하는 CPU

    이 CPU가 단 하나만 존재한다면 실행 중인 프로그램들이 시간 단위로 CPU 제어권을 부여받아 기계어를 처리해야 한다.

    다중 처리기 시스템처럼 CPU가 여러 개인 시스템은 여러 CPU에서 프로그램에 대한 연산을 수행할 수 있으므로 훨씬 빠르게 처리가 가능하다. 하지만 CPU를 제외한 자원은 공유해야 하므로 단일 처리기 시스템보다 복잡하다.

  6. 시스템 콜에 대해 설명해주세요.

    사용자 프로그램이 입출력 요청을 하기 위해 운영체제의 커널 함수를 호출하는 것

    • 입출력 요청과 같이 IO장비에게 요청을 하는 기계어는 ‘특권명령’으로서 운영체제만 수행할 수 있다.
    • 따라서 사용자 프로그램은 입출력이 필요한 순간에 스스로 인터럽트를 발생시켜 운영체제가 CPU제어권을 갖도록하여, 대신 입출력 요청을 수행할 수 있게 한다.
  7. 커널에 대해 설명해주세요.

    컴퓨터 부팅시 메모리에 올라가는 운영체제의 핵심 부분.

    • 전원이 꺼질 때까지 메모리에 상주한다.

    • 커널 영역을 제외한 나머지 메모리 부분을 실행 중인 프로그램들이 나눠서 사용한다.

  8. 커널모드에 대해 설명해주세요. (모니터 모드, 시스템 모드)

    mode bit가 0으로, 운영체제가 CPU 제어권을 가지고 있는 상황

    • CPU는 기계어 실행 전에 해당 기계어가 특권명령인지를 확인한다.
    • 해당 기계어가 특권명령일 경우 mode bit가 0 즉, 커널모드일 때만 실행할 수 있도록 제어한다.
  9. 유저모드에 대해 설명해주세요. (사용자 모드)

    mode bit가 1로, 사용자 프로그램이 CPU 제어권을 가지고 있는 상황

    • CPU가 기계어 실행 전에 해당 기계어가 특권명령인지를 확인했을 때 특권명령일 경우
    • mode bit가 1이면, 해당 기계어를 실행하지 않고 자동으로 CPU 제어권을 운영체제에게 넘긴다.
  10. 폴링에 대해 설명해주세요. (인터럽트와 비교)

    CPU가 다른 프로세스를 실행하는 동안 디바이스로부터 발생하는 이벤트를 처리하는 방식

    인터럽트는 디바이스가 서비스가 필요함을 CPU에 알리는 반면, 폴링은 CPU가 디바이스 서비스가 필요한지 여부를 반복적으로 확인하는 방식이다.

  11. 인터럽트에 대해 설명해주세요. (폴링과 비교)

    CPU가 다른 프로세스를 실행하는 동안 디바이스로부터 발생하는 이벤트를 처리하는 방식

    하드웨어 매커니즘으로 CPU는 다음 기계어 실행 전 항상 인터럽트 라인을 체크해 들어온 인터럽트가 있는지 확인하고 인터럽트가 있으면 운영체제에 CPU제어권을 넘겨 작업을 처리한다.

    • 하드웨어 인터럽트
      • IO 디바이스 컨트롤러가 발생시키는 인터럽트. 요청한 IO작업이 끝나면 디바이스 컨트롤러가 CPU의 인터럽트 라인을 세팅
      • Timer가 발생시키는 인터럽트. 운영체제가 사용자 프로그램에 CPU 제어권을 넘길때는 항상 timer를 설정해서 같이 넘긴다. 무한루프 등으로 해당 시간을 넘게되면 타이머 인터럽트를 발생시켜 다시 제어권을 운영체제가 갖게 한다.
    • 소프트웨어 인터럽트 (트랩)
      • 시스템콜 : 사용자 프로그램이 CPU를 사용하다 입출력이 필요한 순간에 스스로 인터럽트를 발생시켜 커널 함수를 호출하는 것.
      • 익셉션 : 0으로 나누는 것과 같이 예외가 발생하거나 권한이 없는 기계어를 수행하려 하는 경우 발생되는 인터럽트
  12. DMA에 대해 설명해주세요.

    Direct Memory Access의 약자로, 직접 메모리에 접근 가능하다는 것을 의미

    • 원칙적으로 메모리는 CPU의 작업공간으로서 CPU만 읽고 쓰고할 수 있다.
    • 따라서 IO인터럽트가 발생하는 경우 IO장치가 읽은 내용을 CPU가 메모리에 카피해야 하는데, IO인터럽트가 너무 자주 발생하게 되면 CPU가 매번 하던일을 중단하고 디스크의 로컬버퍼를 확인해 메모리를 쓰는 작업을 반복해야 하기 때문에 비효율적이다.
    • 이런 문제를 개선하기 위해 DMA 컨트롤러가 직접 디스크 로컬버퍼에 있는 내용을 메모리에 옮기고 일정 양이 찬 뒤에 인터럽트를 한번이 발생시키도록하여 비효율을 개선한다.
  13. 동기식 I/O에 대해 설명해주세요.

    IO디바이스에 IO요청을 한 뒤에 다른 프로그램에 CPU제어권을 넘겨줬다가. 요청이 끝난 후 결과를 토대로 다시 작업을 재시작하는 방식.

    • CPU와 IO 디바이스가 서로 조율하며 작업하는 방식
  14. 비동기식 I/O에 대해 설명해주세요.

    IO디바이스에 IO요청을 한 뒤에, IO 결과와는 상관 없이 바로 작업을 지속하는 방식

    • 일반적으로 IO요청을 한다는 것은 수행 중인 기계어가 IO요청결과를 토대로 진행되는 경우가 많다. 하지만 간혹 IO요청과는 상관없이 다음 로직이 진행될 수 있다.
    • 예를 들면 디스크에 파일을 저장하는 것. 저장 여부를 확인해야 다음 기계어를 진행할 수 있는게 아니기 때문에 비동기적으로 입출력이 일어날 수 있다.
참고

회고

  1. 좋았던 점
    공부자료로 추천해주신 반효경 교수님 강의를 통해 학습하였다.
    비전공자라 컴퓨터구조나 운영체제는 블로그 글을 통해 파편적으로 학습해왔었는데, 강의를 통해 단계적으로 배우다보니 훨씬 더 깊은 이해가 가능해서 매우 재미있었다!

  2. 아쉬운 점
    이번 주차 공부를 위해서 반효경 교수님 수업을 6강까지 학습하였다.
    대학교 때처럼 수업 내용을 필기하면서 들으려니 예상한 것보다 오랜 시간이 걸렸다.
    결국 수요일,목요일엔 잠자는 시간을 쪼개서 공부를 해야했고 결국 컨디션 난조...
    다음 주차에는 시간 분배를 좀 더 잘해봐야겠다!

0개의 댓글