[워밍업 클럽 3기] CS 1주차 - 운영체제 미션
while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 }위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?
인터럽트
폴링 방식은 일정 간격마다 상태를 확인하므로 불필요한 CPU 리소스를 낭비 -> 인터럽트 방식을 사용하여
하드웨어 또는 소프트웨어에서 발생하는 신호로, 이벤트가 발생했을 때 운영체제가 즉시 반응하도록 함
프로그램과 프로세스가 어떻게 다른가요?
프로그램: 실행 파일이나 코드와 같은 정적인 개념. 하드디스크 등에 저장된 실행 가능한 파일.
프로세스: 프로그램이 실행될 때 운영체제로부터 메모리를 할당받아 동작하는 개체. 실행 중인 프로그램
멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?
멀티프로그래밍: 여러 개의 프로그램이 메모리에 올라가 있지만 CPU는 한 번에 하나씩 실행하며, 빠르게 전환하면서 실행하는 방식
멀티프로세싱: 두 개 이상의 CPU 또는 코어가 여러 프로세스를 동시에 실행하는 방식. 실제 병렬 처리 가능
운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?
프로세스의 실행과 스케줄링을 위해 PCB(Process Control Block), 스케줄러, 컨텍스트 스위칭 등을 사용
PCB: 프로세스의 정보를 저장하는 데이터 구조로, 프로세스 ID, 상태, 레지스터 값, 메모리 정보 등을 포함
스케줄러: CPU 할당 순서를 결정하는 알고리즘을 사용하여 프로세스의 실행을 조율
컨텍스트 스위칭: 실행 중인 프로세스의 상태를 저장하고, 다른 프로세스를 실행하기 위해 이전 상태를 복원하는 과정
컨텍스트 스위칭이란 뭔가요?
운영체제가 현재 실행 중인 프로세스를 중단하고 다른 프로세스를 실행하기 위해 레지스터, 프로그램 카운터, 메모리 정보 등을 저장하고 복구하는 과정
댓글을 작성해보세요.