• 스택을 스레드마다 독립적으로 할당하는 이유는?

    <aside> 🥕

    스택은 함수 호출시 전달되는 인자, 복귀 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간입니다. 스택 메모리 공간이 독립적이라는 것은 독립적인 함수 호출이 가능함을 의미하고 이는 독립적인 실행 흐름이 추가된다는 것이다. 따라서 스레드의 정의에 따라 독립적인 실행 흐름을 추가하기 위한 최소 조건으로 독립된 스택을 할당하는 것이다.

    </aside>

  • DMA(Direct Memory Access)란?

    <aside> 🥕

    CPU를 대신하여 I/O장치와 Memory사이의 데이터전송을 담당하는 장치 주변장치(하드디스크, 그래픽카드)들이 메모리에 직접 접근하여 읽거나 쓰도록 하는 기능 CPU의 개입 없이 I/O장치와 기억장치 사이의 데이터를 전송할수있음 인터럽트 발생 횟수 최소화하여 성능 높임

    </aside>

  • CPU 스케줄링이 왜 필요할까요?

    <aside> 🥕

    CPU 스케줄링은 여러 프로세스가 CPU를 공정하고 효율적으로 사용하도록 하기 위해 필요

    컴퓨터에는 동시에 여러 프로세스가 실행되는데, CPU는 한 번에 하나의 프로세스만 처리할 수 있음

    CPU 스케줄링은 어떤 프로세스에 CPU를 할당할지, 얼마나 오래 사용하게 할지를 결정하여 시스템의 처리율을 높이고, 응답 시간을 줄이는 등 전반적인 성능을 향상

    </aside>

  • PCB에 대해서 설명해주세요.

    <aside> 🥕

    프로세스는 CPU를 할당받아 작업을 처리하다가, 문맥 교환이 일어나면 진행 중이던 작업 내용을 PCB에 저장하고 CPU를 반환한다.

    이후에 다시 CPU를 할당받으면 PCB로 부터 진행이 끊겼던 부분에서 다시 작업을 실행한다 - 프로세스 식별자, 상태, PC(프로그램 카운터, 다음 실행할 명령의 주소 가르킴), 메모리 관리 정보 등을 가지고 있다.

    </aside>

  • 컨텍스트 스위칭의 과정을 설명한다면(핀토스 기준이면 더 좋음)?

    <aside> 🥕

    Task의 대부분 정보는 Register에 저장되고 PCB로 관리된다. 현재 실행하고 있는 Task의 PCB 정보를 저장한다. 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행할 수 있다.

    </aside>

  • 인터럽트와 시스템 콜의 차이에 대해서 설명하세요.

    • 답
  • 한컴오피스 '한글'을 클릭 후 빈 화면에 커서가 깜빡이고 있다. 이때 hello world를 작성하면 컴퓨터 내부에서 어떤일이 발생하는가?

    <aside> 🥕

    • 키보드에서 사용자 입력이 들어오면 키보드 컨트롤러가 인터럽트를 발생시켜 CPU에게 키가 입력되었다는 사실을 알려준다.
    • CPU는 현재 수행중이던 작업의 상태를 저장하고 인터럽트 요청을 처리하기 위해 OS내에 정의된 키보드 인터럽트 처리 루틴을 찾아간다.
    • 키보드 인터럽트 처리 루틴은 키보드로 부터 입력받은 내용을 메모리의 특정 부분에 저장해 해당 프로그램에게 키보드 입력이 들어왔음을 알리며 인터럽트 처리를 완료한다.
    • 인터럽트 처리가 끝나면 인터럽트가 발생하기 직전 상태를 복구시켜 중단되었던 작업을 재개한다. </aside>
  • 페이징 기법에 대해 설명해주세요.

    <aside> 🥕

    페이징은 프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 나누고, 물리 주소 공간을 페이지와 동일한 크기의 프레임이라는 일정한 단위로 나눈 뒤 페이지를 프레임에 할당하는 가상 메모리 기법입니다.

    외부 단편화가 발생하지 않는다는 장점이 있습니다.

    </aside>

  • 운영체제의 커널이 무엇이고, 커널이 왜 존재하는지 설명해주세요

    <aside> 🥕

    커널은 운영체제의 핵심 부분으로, 하드웨어와 응용 프로그램 간의 중재자 역할을 합니다. 커널은 프로세스 및 스레드가 올바르게 실행되도록 돕고, 이들이 CPU, 메모리, 보조기억장치 등의 하드웨어를 공정하게 할당받아 실행되도록 합니다. 또 커널은 이중 모드를 운영해 사용자 응용 프로그램이 안전하고 효율적으로 시스템 자원을 사용할 수 있도록 합니다.

    </aside>

  • 운영체제는 다중 프로세스가 하나의 컴퓨터의 자원을 사용할 때 자원의 '보호'를 합니다. 어떠한 보호를 하는지 설명하고 시나리오를 설명하세요.

    <aside> 🥕

    1. 입출력장치 보호
      • A가 프린터에 인쇄를 요청하여 프린터가 A의 작업을 수행 중일 때 B가 프린터 요청을 하면 A의 작업 이후에 B의 작업을 수행해야합니다.
      • 이와 관계된 특권 명령(in, out) 명령은 에플리케이션에서 하는 것이 아닌 운영체제가 수행합니다.
    2. 메모리 보호
      • A가 실행한 프로세스는 B가 실행한 프로세스의 메모리를 읽거나 쓰지 못하도록 막습니다.
      • CPU와 메모리 사이에 MMU(Memory Management Unit)두어서 base, limit 레지스터 값을 읽어서 해당 메모리 부분을 넘지 못하도록 합니다.
    3. CPU 보호
      • while ( n = 1) 과 같이 실수 혹은 고의로 하나의 프로세스가 CPU시간을 독점하는 일을 방지해야합니다.
      • 일정 주기로 CPU에게 타이머가 인터럽트를 걸도록 회로를 설계합니다. 인터럽트를 걸면 CPU는 지금 하는 일을 멈추고 인터럽트 서비스 루틴으로 넘어갑니다. 이 코드에는 CPU 시간이 다른 모든 프로세스에게 골고루 가는지, 한 놈에게 집중되는지 체크합니다. </aside>