인프런 워밍업 클럽 스터디 2기 CS 1주차 미션

운영체제

1.

```C

while(true){

wait(1); // 1초 멈춤

bool isActivated = checkSkillActivated(); // 체크

}

```

위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다.

이 방식은 폴링방식입니다.

1초마다 체크하기 때문에 성능에 좋지 않습니다.

이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?

정답: 인터럽트 방식을 사용하여 입력이 완료되었을 때 신호를 받습니다.

 

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

정답: 프로그램은 저장 장치에 존재하는 실행 파일이고, 프로세스는 현재 메모리 올라가 실행 중인 프로그램을 말합니다.

 

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

정답: 멀티프로그래밍은 메모리에 여러 개의 프로그램을 올려 놓는 것을 말하고, 멀티프로세싱은 그 여러 프로세스들을 돌아가며 모두 실행시키는 걸 말합니다.

 

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

정답: PCB(Process Control Block)를 통해 프로세스를 관리합니다. PCB는 CPU 스케줄링을 원활하게 진행할 수 있도록(멈췄다가 다시 실행할 수 있도록) 프로세스의 다양한 정보를 담고 있습니다.

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

정답: 프로세스의 CPU 사용권을 다른 프로세스로 옮기는 작업으로 현재 작업 중인 프로세스의 정보를 PCB에 저장해 보관하고 실행할 프로세스의 PCB를 가져와 그 정보를 참조하여 이어서 실행한다.

 

자료구조와 알고리즘

1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.

이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?

이유를 함께 적어주세요.

정답: 배열을 사용할 거 같습니다. 한번 반이 배정되면 반 학생이 추가되거나 제거되는 경우가 거의 없고 참조하는 경우가 많을 것이기에 추가 및 삭제에서는 연결 리스트보다 성능이 좋지 않지만 참조에서는 O(1)의 성능을 보이는 배열을 사용하겠습니다.

2. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다.

주문은 들어온 순서대로 처리됩니다.

이 때 여러분이라면 어떤 자료구조를 선택하실 건가요?

이유를 함께 적어주세요.

정답: Queue를 사용하겠습니다. 큐는 FIFO 자료구조로 먼저 들어온 게 먼저 나갑니다. 따라서 주문은 순서대로 처리해야하기에 FILO인 Stack보다는 Queue가 더 적절한 거 같습니다.

댓글을 작성해보세요.

채널톡 아이콘