🎁 모든 강의 30% + 무료 강의 선물🎁

미션 1주차

운영체제

    while(true){
      wait(1); // 1초 멈춤
      bool isActivated = checkSkillActivated(); // 체크
    }

1. 위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?
-> 인터럽트를 사용한다. 인터럽트는 자신의 상태가 바뀔 때 CPU에 통보해주는 기법이다

 

  1. 프로그램과 프로세스가 어떻게 다른가요?
    -> 프로그램 : 저장장치(HDD,SSD 등)에 저장되어 특정 작업을 수행하는 명렁어 모음
    프로세스 : 메모리에 탑재되어 실행중인 프로그램

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


    ->멀티프로그래밍 : 메모리 위에 여러 개의 프로그램을 실행시켜 처리하는 것
    멀티프로세싱 : 두 개 이상의 프로세서(CPU)가 각 프로세스를 처리하는 것

  1. 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?
    -> 관리하고자 하는 프로세스의 정보를 가지고 있는 PCB를 만들고 저장한다

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

->실행되어야할 프로세스를 변경하기 위해 기존 프로세스의 정보를 PCB에 저장하고 실행될 프로세스의 PCB 내용대로 작업하는 것

 

 

자료구조와 알고리즘

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


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

-> 한번 정해진 교실의 학생들은 추가/삭제가 빈번하지 않기 때문에 연결리스트가 효율적이다 교실의 학생 수는 언제든지 바뀔 수 있기 때문에 미리 많은 공간을 마련해둬야 하는 해시테이블과 크기가 고정되어 있는 배열은 비효율적이다

 

 

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


    -> Queue를 사용한다 FIFO방식으로 먼저 온 손님을 먼저 계산해줄 수 있기 때문

  1. 우리가 구현한 스택은 0번 인덱스, 즉 입구쪽으로 데이터가 삽입되고 나오는 구조입니다. 반대로 마지막 인덱스, 즉 출구쪽으로 데이터가 삽입되고 나오는 구조로 코드를 변경해주세요.
    -> LinkedList의 insertLast , deleteLast 함수를 사용한다

    import { LinkedList } from "./linkedList.mjs";
    
    class Stack {
      constructor() {
        this.list = new LinkedList();
      }
    
      push(data) {
        this.list.insertAt(0, data);
      }
    
      insertLast(data) {
        this.list.insertLast(data);
      }
    
      deleteLast() {
        return this.list.deleteLast();
      }
    
      pop() {
        try {
          return this.list.deleteAt(0);
        } catch (e) {
          return null;
        }
      }
    
      peek() {
        return this.list.getNodeAt(0);
      }
    
      isEmpty() {
        return this.list.count === 0;
      }
    }
    
    export { Stack };
    

     

  1. 해시테이블의 성능은 해시 함수에 따라 달라집니다. 수업 시간에 등번호를 이용해 간단한 해시 함수를 만들어봤습니다. 이번엔 등번호가 아닌 이름을 이용해 데이터를 골고루 분산시키는 코드로 수정해주세요. 힌트: charCodeAt() 함수를 이용 예시: name1 = "이운재"; name1.charCodeAt(0); // 51060 이운재의 0번 인덱스 ‘이’의 유니코드 출력

hashFunction(name){
 return  name.charAt(0) % 10;
}


채널톡 아이콘