🔥딱 8일간! 인프런x토스x허먼밀러 역대급 혜택

[인프런 워밍업 클럽 CS 3기] 1주차 운영체제 미션

[인프런 워밍업 클럽 CS 3기] 1주차 운영체제 미션

Q1) 아래 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?

while(true){
    wait(1); // 1초 멈춤
    bool isActivated = checkSkillActivated(); // 체크
}

플레이어가 스킬을 사용한 경우에 이벤트를 발생시키거나 콜백 함수가 실행되도록 구현하여 무한 반복문을 돌면서 불필요한 자원 낭비를 막을 수 있다.
Java Script의 경우 eventListener를 사용하여 이벤트를 다룰 수 있고, C언어는 select나 kqueue와 같이 멀티플렉싱을 지원하는 시스템 콜 함수를 사용하여 작업이 완료된 경우 후속 작업을 처리하도록 구현할 수 있다.

 

폴링 방식(Polling)

I/O 작업이 완료되었는지 CPU가 주기적으로 확인하는 것
→ CPU의 낭비가 심하다.
⇒ 인터럽트 방식을 사용

인터럽트(Interrupt)

I/O 관리자에게 I/O 작업을 맡기고, CPU는 다른 작업을 처리.
I/O 작업 완료 시, 인터럽트 발생 → CPU가 완료된 I/O 작업을 이어서 처리
⇒ CPU의 낭비 없이 CPU의 처리량을 높일 수 있다.

 

Q2) 프로그램과 프로세스가 어떻게 다른가요?

  • 프로그램

    • 저장장치에 저장된 코드의 집합으로, 정적인 상태이다.

    • 수동적

  • 프로세스

    • 실행 중인 프로그램으로, 프로그램이 메모리에 적재되어 운영체제의 관리하에 실행되는 동적 개체이다.

    • 능동적

     

     

    Q3) 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?

    • 멀티프로그래밍

      • 하나의 메모리에 여러 개의 프로세스를 적재하여 실행시키는 것이다.

      • 시분할(time-sharing) 시스템을 통해 여러 개의 프로세스가 동시에 실행되는 것처럼 보이게 할 수 있다. 실제로는 한 번에 하나의 프로세스만 실행된다.

    • 멀티프로세싱

      • 여러 개의 프로세서(CPU)가 여러 개의 프로세스를 실행시키는 것이다.

      • 실제로 여러 개의 프로세스가 동시에 실행될 수 있다. (병렬처리)

      • 동시에 작업되는 프로세스의 최대 수 = CPU 개수

     

    Q4) 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?

     

    프로세스가 생성될 때 운영체제는 PCB(Process Control Block)를 생성한다.

     

    PCB에는 Process ID, 프로세스 상태, 포인터, PC(Process Counter), 레지스터 정보 등이 포함되어 있다. 이 정보를 통해(특히 PC, 레지스터 정보) 시분할 시스템에서 CPU 할당 시 이전 작업 상태를 이어받아 실행할 수 있다.

     

     

    Q5) 컨텍스트 스위칭이란 뭔가요?

    1. 한 프로세스가 I/O 작업 요청이나 CPU 점유시간 초과 등으로 인해 CPU를 반납해야 할 경우, 인터럽트가 발생하여 운영체제가 해당 프로세스로부터 CPU 제어권을 회수한다.

    2. 이때, 현재 실행 중인 프로세스의 레지스터 값 등을 PCB에 저장한다.

    3. 이후, 다음에 실행할 프로세스의 PCB에 저장된 레지스터 값을 CPU에 로드하고,

      PC에 저장된 다음으로 실행할 명령어의 주소를 보고 프로세스의 작업을 이어서 진행한다.

댓글을 작성해보세요.

채널톡 아이콘