💸딱 하루, 인프런 천원샵 오픈!

[워밍업 클럽 3기 - CS 전공 지식] - 1주차 발자국

학습 내용 복습

Q. 배열(Array)의 특징은?

A.

  • 가장 기본적인 자료구조

  • 배열은 같은 종류의 데이터들이 순차적으로 저장되어 있다

  • 배열의 크배열은 메모리 주소가 연속될 것을 요구하기 때문에 배열의 크기를 늘리는 것은 불가능기에 상관 없이 인덱스를 알고 있으면 해당 원소로 접근하는데 걸리는 시간은 O(1)​이다(참조의 성능이 좋다)

  • 배열의 크기를 늘릴 필요가 있다면 크기가 더 큰 새로운 배열을 생성하여 기존 배열의 내용을 복사하는 과정이 필요하다

 

Q. 연결 리스트(Linked List)의 특징은?

A.

  • 연결 리스트는 낭비되는 메모리 없이 필요한 만큼만 메모리를 확보해서 사용하기 위해서 노드를 만들고 각 노드를 서로 연결해서 사용한다

  • 노드는 저장할 데이터와 다음 노드로 향하는 참조를 가지고 있다. 첫 노드(헤드 노드)의 주소만 알고 있으면, 다른 연결된 모든 노드에 접근할 수 있다

  • 초기에 크기를 정해야 하는 기존 배열의 단점을 해결할 수 있다

 

Q. 해시 테이블(Hash Table)의 특징은?

A.

  • 키-값(Key-Value) 형태의 자료구조

  • 키를 알고 있다면, O(1)의 성능으로 값을 읽기/삽입/수정/삭제하는 것이 가능하다(해시 충돌이 없다는 가정)

  • 해시 함수(해시 알고리즘)를 사용한다. 해시 함수를 통해 값에 대한 해시값을 계산한다.

  • 해시 인덱스(hash index)는 데이터가 저장될 위치라고 생각하면 편한다

  • 해시 값에 대한 해시 인덱스를 구하는 과정을 해싱(hashing)이라고 한다

  • 해시 충돌(hash collision)은 이미 키에 값이 존재하는 경우에 값을 삽입되는 경우 발생한다. 이 경우 해당 키에서는 값들을 리스트로 저장해서 사용한다.

 

Q. 프로세스(Process)란?

A. 실행 중인 프로그램. 프로그램 자체는 명령어의 집합일 뿐이다. 반면에 프로세스는 해당 프로그램을 실행하여, 프로세스가 사용할 독립된 메모리 공간을 할당받는다.

 

Q. 시분할 시스템(Time-Sharing System)이란?

A. CPU가 여러 프로세스에게 짧은 시간 간격(시간 조각)을 할당하고, 각 프로세스는 이 시간 동안만 실행되는 방식의 시스템. 시간 간격이 매우 짧아서 여러 프로세스가 동시에 실행되는 것처럼 보이게 만들 수 있다.

 

Q. 컨텍스트 스위치(Context-switch)란?

A. 운영 체제가 CPU를 하나의 프로세스에서 다른 프로세스로 전환하는 과정. 과정을 대략적으로 설명하면 다음과 같다.

  • 인터럽트가 발생하면, 운영 체제는 현재 실행 중인 프로세스의 상태 정보를 PCB에 저장

  • (스케줄러는 준비 상태 큐에 있는 프로세스 중에서 선택)

  • 선택된 프로세스의 PCB에서 상태 정보를 참조해서 상태를 복원

  • CPU가 새 프로세스를 실행하기 시작

 

🤔 회고

  • CS 지식을 복습할 수 있어서 너무 좋았다

댓글을 작성해보세요.


채널톡 아이콘