[미션] 인프런 워밍업 클럽 2기 CS - 1주차

[미션] 인프런 워밍업 클럽 2기 CS - 1주차

 

운영체제

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

 while(true){

      wait(1); // 1초 멈춤

      bool isActivated = checkSkillActivated(); // 체크

    }

폴링 방식 대신 인터럽트 방식을 사용하면 성능을 개선할 수 있습니다. 인터럽트는 특정 조건이 발생했을 때, CPU가 그 일을 처리하게 만드는 방식이기 때문에 예를 들어, 플레이어가 스킬을 사용했을 때만 인터럽트가 발생하도록 해서 CPU가 불필요하게 1초마다 체크하지 않도록 할 수 있습니다.


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

프로그램 : 저장된 명령어의 집합, 실행 파일 형태로 하드디스크나 메모리에 존재하지만 실행되지 않은 상태.
프로세스 : 실행 중인 프로그램으로, 운영체제가 관리하는 실행 단위. CPU 시간과 메모리 같은 자원을 차지하며 활동 중임.


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

멀티프로그래밍: 메모리에 여러 프로그램을 올려두고, CPU가 한 번에 하나의 프로그램을 처리하지만 빠르게 교체하며 실행하는 방식.

멀티프로세싱: 여러 CPU 또는 코어가 동시에 여러 프로세스를 병렬로 실행하는 방식으로, 물리적으로 병렬 처리가 이루어짐.


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

운영체제는 프로세스 제어 블록(PCB, Process Control Block)을 사용해서 프로세스를 관리합니다. PCB는 운영체제가 각 프로세스의 상태와 관련된 중요한 정보를 저장하는 자료구조이며, 운영체제는 이 정보들을 기반으로 CPU 스케줄링, 메모리 관리, 입출력 관리를 수행합니다.


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

컨텍스트 스위칭은 운영체제가 한 프로세스의 실행 상태를 저장하고, 다른 프로세스의 상태를 복구해 CPU에서 실행을 전환하는 과정입니다. 이때 프로세스의 레지스터, 메모리, 스케줄링 정보를 저장하고 복구합니다.


자료구조와 알고리즘

1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.

해시테이블 : 해시테이블은 학생의 고유한 식별자(예: 학번, 이름 등)를 키로 사용하여 해당 학생 정보를 저장하고 빠르게 검색할 수 있습니다. 평균적으로 O(1)의 시간 복잡도로 접근이 가능해서 대규모 학생 정보를 빠르게 처리할 수 있다는 장점이 있기때문에, 학번이나 이름으로 학생을 조회하는 작업에 적합하다고 생각합니다.


2. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.

: 주문은 들어온 순서대로 처리되기 때문에 FIFO(First In, First Out) 방식이 필요하기 때문에 FIFO 로 데이터가 처리되는 큐가 주문처리를 위한 자료구조 적합하다고 생각합니다.

댓글을 작성해보세요.

채널톡 아이콘