[인프런 워밍업 클럽 2기 - CS] 1주차 미션
운영체제
while(true){
wait(1); // 1초 멈춤
bool isActivated = checkSkillActivated(); // 체크
}
위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다.
1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?
인터럽트 방식을 사용하는게 좋을 것 같습니다.
인터럽트는 비동기적으로 동작하기 때문에 성능을 개선할 수 있는 이점이 있습니다.
이와 같이 인터럽트를 사용하면 폴링 방식보다 더 효율적으로 스킬 사용 여부를 체크할 수 있으며,
CPU 자원을 보다 효과적으로 활용할 수 있습니다.
프로그램과 프로세스가 어떻게 다른가요?
프로그램: 저장장치에 저장된 실행 가능한 코드(정적 개체)입니다.
실행되기 전까지는 하드디스크나 메모리에만 존재하는 단순한 명령어 집합입니다.
프로세스: 프로그램이 메모리에 적재되어 실행되고 있는 상태(동적 개체)입니다.
프로세스는 운영체제에 의해 메모리, CPU 등 자원을 할당받고 실행됩니다.
멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?
멀티프로그래밍: 여러 프로그램이 메모리에 동시에 적재되어 실행되도록 하는 기법입니다.
하나의 CPU가 각 프로그램을 번갈아가며 실행하는 방식입니다.
즉, 프로그램 간 자원을 효율적으로 나누는 것을 목표로 합니다.
멀티프로세싱: 둘 이상의 CPU(또는 코어)를 사용하는 기법으로, 여러 프로세스가 동시에 실행됩니다.
각 프로세스는 독립된 CPU에서 병렬적으로 실행되므로 성능이 더 뛰어납니다.
운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?
운영체제는 프로세스를 효율적으로 관리하기 위해 프로세스 제어 블록(PCB)을 사용합니다.
PCB에는 프로세스의 상태, 메모리 정보, 프로그램 카운터, 레지스터 정보 등 프로세스의 실행 상태를 저장하
고 있습니다.
운영체제는 PCB를 기반으로 프로세스를 생성, 관리, 스케줄링합니다.
컨텍스트 스위칭이란 뭔가요?
컨텍스트 스위칭은 운영체제가 CPU에서 실행 중인 프로세스를 다른 프로세스로 교체할 때 발생하는 과정입니다. 실행 중이던 프로세스의 상태(레지스터, 프로그램 카운터 등)를 저장하고, 새로 실행할 프로세스의 상태를 복구하는 과정이 포함됩니다. 컨텍스트 스위칭은 프로세스나 스레드 간 전환을 가능하게 하지만, 빈번하게 발생하면 성능에 부담이 될 수 있습니다.
자료구조와 알고리즘
여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.
이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?
이유를 함께 적어주세요.
연결 리스트(Linked List) 자료구조를 사용하겠습니다.
그 이유는 학생 정보가 추가되거나 삭제될 때 효율적으로 처리할 수 있기 때문입니다.
배열과 달리, 연결리스트는 중간에 있는 학생 정보를 쉽게 추가하거나 삭제할 수 있어 유연한 데이터 관리를 할 수 있기 때문입니다.
여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다.
주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요?
이유를 함께 적어주세요.
큐(Queue) 자료구조를 사용하겠습니다.
큐는 선입선출 방식으로 동작하는 자료구조로, 먼저 들어온 주문이 먼저 처리되도록 보장하므로 이는 실제 주문 시스템에서 자연스러운 흐름을 구현할 수 있기 때문입니다.
댓글을 작성해보세요.