[워밍업 클럽 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 지식을 복습할 수 있어서 너무 좋았다
댓글을 작성해보세요.