인프런 워밍업 클럽 - CS 1주차 미션

인프런 워밍업 클럽 - CS 1주차 미션

운영체제

  1. while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 } 위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?

    • Interrupt 방식

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

    • Program

      • 저장장치에 저장된 명령문의 집합체

      • 저장 장치만 사용하는 수동적인 존재

    • Process

      • 실행중인 프로그램

      • 저장장치에 저장된 프로그램이 메모리에 올라갔을 때 프로세스라고 한다.

      • 메모리, CPU, I/O 작업을 수행하는 능동적인 존재

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

    • Multi-Programming

      • 메모리에 여러개의 프로세스가 올라온 상태

      • 메모리 관점으로 정의

    • Multi-Processing

      • CPU 관점으로 정의

      • CPU가 여러 개의 프로세스를 처리하는 것을 의미한다.

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

    • PCB(Process Control Block)과 CPU Scheduling을 사용해서 프로세스를 관리한다.

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

    • 프로세스를 실행하는 중에 다른 프로세스를 실행하기 위해 실행중인 프로세스의 상태를 저장하고, 다른 프로세스의 상태값으로 전환하는 작업

    • Context Switching이 발생할 때 PCB의 내용이 변경된다.

      • 프로세스 상태, 프로그램 카운터, 레지스터 정보, 메모리 관련 정보 등이 변경된다.

자료구조와 알고리즘

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

    • 선택한 자료구조 : List | HashTable

    • 교실의 학생 정보가 항상 일정하다고 생각하지 않기 때문이다.

    • 교실에 새로운 학생이 전학을 온다던가 기존에 있던 학생이 전학을 간다고 한다면 고정된 사이즈를 갖고 있는 Array의 경우 삽입/삭제 처리가 어려울 것이라고 생각된다.

    • 만일 전학이 빈번하지 않는다고 한다면 Array를 사용하는 편이 더 효율적이라고 생각한다.

    • 한명의 학생에게 고유한 학번을 부여하고, 해당 학번에 학생을 매핑해 놓는다고 한다면 가장 성능이 좋을 것이라고 생각한다.

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

    • 선택한 자료구조 : Queue

    • 먼저 주문을 한 고객부터 순서대로 주문을 처리해야 하기 때문이다.

댓글을 작성해보세요.

채널톡 아이콘