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

운영체제

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

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

폴링방식을 사용하지 않고 인터럽트를 사용하면 좋을 것 같습니다.

 

  1. 프로그램과 프로세스가 어떻게 다른가요?

프로그램은 저장 장치에 저장된 명령문의 집합입니다.
프로세스는 간단히 말해 실행중인 프로그램으로 메모리에 올라가 실행되는 상태입니다.
즉 프로그램은 저장장치만 사용하는 수동적인 존재라 볼 수 있고
프로세스는 메모리, CPU, 입출력 자원을 활용하는 능동적인 존재입니다.

 

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

멀티프로그래밍은 메모리에 여러 개의 프로세스가 올라와 실행되는 것 입니다.(메모리 관점)

멀티프로세싱은 CPU가 여러개의 프로세스를 동시에 처리하는 방식입니다.(CPU 관점)

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

PCB(Process Contorl Block)을 활용합니다.

PCB는

포인터, 프로세스 상태 (생성, 준비, 실행, 대기, 완료), 프로세스 ID, 프로그램 카운터, 레지스터 정보, 메모리 관련 정보, CPU 스케줄링 정보 등

을 가지고 있습니다.

  1. 컨텍스트 스위칭이란 뭔가요?

컨텍스트 스위칭은 실행 중인 프로세스의 상태를 저장하고, 다른프로세스의 상태를 복원해서 사용하는 것입니다.

컨텍스트 스위칭 과정은

1. 현재 실행 중인 프로세스의 상태 저장

- PCB에 프로그램 카운터, 레지스터 값, 프로세스 상태 등 저장*

2. 새로운 프로세스의 PCB를 로드

- 프로그램 카운터를 새로운 프로세스의 위치로 변경

- 레지스터 값을 복원

3. 새로운 프로세스 실행

입니다.

발생 이유는 CPU 점유 시간이 종료됐거나, I/O 요청이 발생했거나, 다른 인터럽트가 발생했을 경우 컨텍스트 스위칭이 발생합니다.

댓글을 작성해보세요.

채널톡 아이콘