![[인프런 워밍업 클럽 3기 CS] 운영체제 1주 차 미션](https://cdn.inflearn.com/public/files/blogs/e8ee76a1-f6b7-49c7-83ab-4c2099f688d8/336224.png)
[인프런 워밍업 클럽 3기 CS] 운영체제 1주 차 미션
while(true){
wait(1); // 1초 멈춤
bool isActivated = checkSkillActivated(); // 체크
}
1. 위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?
인터럽트를 이용하면 폴링 방식의 성능 문제를 해결할 수 있다. 폴링 방식은 일정 시간 간격으로 상태를 반복적으로 확인하는 방식인데, 이 방식은 CPU 자원을 낭비할 수 있다. 반면, 인터럽트를 사용하면 이벤트가 발생했을 때만 CPU가 작업을 처리하게 되어 효율적으로 자원을 사용할 수 있다.
인터럽트는 CPU가 다른 작업을 수행하던 중에도 중요한 이벤트를 즉시 처리할 수 있도록 한다. 예를 들어, 입출력 작업이 완료되면 입출력 장치가 CPU에 신호를 보내고, 이 신호를 받은 CPU는 해당 작업을 처리하는 인터럽트 서비스 루틴(ISR)을 실행한다. 이처럼 인터럽트는 비동기적으로 발생하며, CPU는 인터럽트가 발생할 때만 해당 작업을 처리한다.
인터럽트는 크게 두 가지 종류로 나눌 수 있다.
하드웨어 인터럽트: 입출력 등과 같은 인터럽트
소프트웨어 인터럽트: 사용자 프로그램에서 발생하는 인터럽트
2. 프로그램과 프로세스가 어떻게 다른가요?
프로그램: 하드디스크와 같은 저장 장치에 저장된 명령문의 집합체
프로세스: 실행 중인 프로그램으로 하드디스크에 저장된 프로그램이 메모리에 올라갔을 때 프로세스라고 부른다.
3. 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?
멀티프로그래밍
하나의 CPU에서 여러 개의 프로세스를 실행하는 것
I/O 작업을 만나면 해당 프로세스에서 발생한 I/O 작업은 기다리면서 다른 프로세스 실행 → CPU가 쉬는 시간이 없음
멀티프로세싱: 여러 개의 CPU가 여러 개의 프로세스를 동시에 실행하는 것
4. 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?
운영체제는 프로세스를 효율적으로 관리하기 위해 PCB(Process Control Block)를 사용한다. PCB는 다음과 같은 구조를 가진다.
포인터: 부모와 자식 프로세스에 대한 포인터와 할당된 자원에 대한 포인터 등, 프로세스의 한 상태에서 다른 상태로 전환될 때 전환하는 포인터
프로세스 상태: 현재 프로세스의 상태(생성, 준비, 실행, 대기, 완료)
프로세스 ID: 프로세스를 식별하기 위한 숫자
프로그램 카운터: 다음에 실행될 명령어의 주소를 포함하는 프로그램 카운터를 저장
레지스터 정보: 프로세스가 실행될 때 사용했던 레지스터 값들이 저장
메모리 관련 정보: 프로세스가 메모리에 있는 위치 정보, 메모리 침범을 막기 위한 경계 레지스터 값 등이 저장
CPU 스케줄링 정보: CPU 스케줄링에 필요한 우선순위, 최종 실행 시간, CPU 점유 시간 등이 저장
5. 컨텍스트 스위칭이란 뭔가요?
프로세스가 실행하는 중에 다른 프로세스를 실행하기 위해 실행 중인 프로세스를 저장하고 다른 프로세스의 상태 값으로 교체하는 작업을 말한다. CPU 점유 시간이 다 되거나 I/O 요청이 있거나 다른 종류의 인터럽트가 있을 때 발생한다. 이때 운영체제는 PCB의 내용을 변경한다.
댓글을 작성해보세요.