[워밍업 클럽_CS 전공 스터디 2기] 1주차 미션
운영체제
1번 문제
while(true){
wait(1); // 1초 멈춤
bool isActivated = checkSkillActivated(); // 체크
}
위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?
답변:폴링은 조사라는 의미를 갖고 있으며, cpu가 입출력관리자에게 계속 확인을 하는 구조이다. 이것은 CPU낭비이므로 해결책으론 인터럽트가 있다.
입출력관리자가 인터럽트 신호를 보낼때까지 cpu는 다른일을 하고. 작업을 완료한 입출력관리자는 인터럽트를 보낸다. 그럼 CPU는 인터럽트 서비스 루틴을 실행시켜 작업을 완료한다.
2번 문제
프로그램과 프로세스가 어떻게 다른가요?
답변:프로그램은 저장장치에 저장된 명령문의 집합체이다. .exe실행파일 같은것들이 있다.
프로세스는 이 프로그램이 메모리 위에 올라가서 실행중인 상태다. 이상태에선 cpu도 쓰고 입출력 장치도 쓰고 그런다.
3번 문제
멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?
답변:메모리위에 여러개의 프로세스가 올라온것을 멀티프로그래밍이라 부른다.
CPU가 시분할 방식으로 여러개의 프로세스를 처리한것을 멀티프로세싱이라 부른다.
올라온것과 처리한것의 차이가 아닌가 싶다
4번 문제
운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?
답변:PCB(process control block)을 만들어서 사용한다.
1)프로세스관리를 위해 운영체제는 해당 프로세스 정보가 담긴 PCB를 만든다.
2)PCB들은 연결리스트라는 자료구조로 저장되어서 해당 프로세스가 종료될때 연결리스트에서 그 PCB도 제거한다
(*연결리스트는 각각의 데이터가 다음 데이터를 연결하는 구조로 되어있는 자료구조다.)
(*PCB의 구조는 포인터,프로세스 상태,프로세스 ID,프로세스 카운터,레지스터 정보,메모리 관련 정보,CPU 스케줄링 정보 등등으로 이루어져있다.)
5번 문제
컨텍스트 스위칭이란 뭔가요?
답변:프로세스 상태를 교체하는 작업입니다.
예를 들자면 CPU점유시간이 다됐거나,인터럽트가 발생했거나,I/O요청이 있을때 컨텍스트 스위칭이 발생됩니다
컨텍스트 스위칭 하는 과정을 설명하자면
1)실행중인 프로세스 A가 교체되야할때. 현재 CPU의 레지스터 값을 프로세스A의 PCB A에 저장합니다
2)그다음 실행될 프로세스 B의 PCB B에서 레지스터값을 CPU 레지스터로 가져오면. 프로세스 B가 실행됩니다.
PCB에 변경하는 값들로는 프로세스 상태,프로그램 카운터,레지스터 정보,메모리 관련 정보 등이 있습니다.
자료구조와 알고리즘
1번 문제
여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.
답변:배열을 사용하겠음. 학생수에 변동이 크지않기 때문임
2번 문제
여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요?
답변:큐의 피포방식(선입선출)을 선택하겠음.
댓글을 작성해보세요.