inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

xx
0

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

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

인터럽트를 이용하면 폴링 방식의 성능 문제를 해결할 수 있다. 폴링 방식은 일정 시간 간격으로 상태를 반복적으로 확인하는 방식인데, 이 방식은 CPU 자원을 낭비할 수 있다. 반면, 인터럽트를 사용하면 이벤트가 발생했을 때만 CPU가 작업을 처리하게 되어 효율적으로 자원을 사용할 수 있다.

인터럽트는 CPU가 다른 작업을 수행하던 중에도 중요한 이벤트를 즉시 처리할 수 있도록 한다. 예를 들어, 입출력 작업이 완료되면 입출력 장치가 CPU에 신호를 보내고, 이 신호를 받은 CPU는 해당 작업을 처리하는 인터럽트 서비스 루틴(ISR)을 실행한다. 이처럼 인터럽트는 비동기적으로 발생하며, CPU는 인터럽트가 발생할 때만 해당 작업을 처리한다.

인터럽트는 크게 두 가지 종류로 나눌 수 있다.

 

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

 

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

 

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

운영체제는 프로세스를 효율적으로 관리하기 위해 PCB(Process Control Block)를 사용한다. PCB는 다음과 같은 구조를 가진다.

 

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

프로세스가 실행하는 중에 다른 프로세스를 실행하기 위해 실행 중인 프로세스를 저장하고 다른 프로세스의 상태 값으로 교체하는 작업을 말한다. CPU 점유 시간이 다 되거나 I/O 요청이 있거나 다른 종류의 인터럽트가 있을 때 발생한다. 이때 운영체제는 PCB의 내용을 변경한다.

답변 0