![[인프런 워밍업 클럽 스터디 3기] CS - 1주차 발자국](https://cdn.inflearn.com/public/files/blogs/35e79d80-6188-4eb8-9696-af3343194287/336224.jpeg)
[인프런 워밍업 클럽 스터디 3기] CS - 1주차 발자국
학습 내용
운영체제
폴링 방식: 주기적으로 CPU를 확인하여 I/O 완료 확인
인터럽트 방식: I/O 완료 시 CPU에게 신호를 주고, ISR을 실행 시켜 작업 완료
프로세스: 하드 디스크에 저장된 프로그램이 메모리에 올라간 상태
프로세스 구조: 코드 영역, 데이터 영역, 힙 영역, 스택 영역
C 언어에서 프로그램이 되는 과정:
C언어 -> 전처리기 -> 컴파일 -> 링커 -> .exe 파일
프로그래밍과 프로세싱
유니 프로그래밍: 메모리에 하나의 프로세스만 처리하는 것, I/O 작업동안 CPU는 쉼
멀티 프로그래밍: 메모리에 여러 프로세스를 처리하는 것, I/O 작업동안 다른 프로세스 처리
멀티 태스킹: 모든 프로세스를 번갈아가면서 실행하는 것
멀티 프로세싱: CPU를 여러개 사용해서 작업을 처리하는 것
PCB
프로세스의 정보를 저장하는 블록, 연결리스트로 PCB 연결
구조: 포인터, 프로세스 상태, 프로세스 ID, 프로그램 카운터, 레지스터 정보 등
프로세스 상태: 생성 New -> 준비 Ready -> 대기 Waiting -> 실행 Running -> 종료 Terminated
컨텍스트 스위칭
프로세스 실행 중 다른 프로세스를 실행하기 위해 현재 상태를 저장하고 새 프로세스의 상태값으로 교체하는 작업
스위칭 이유: CPU 점유 시간 오버, Input 요청, 인터럽트 등
스레드
프로세스 내부에서 실행되는 가장 작은 작업 단위
스레느는 프로세스 내 1개 이상, PCB와 코드, 데이터, 힙 영역 공유
CPU 스케줄링:
프로세스를 우선순위에 따라 CPU에 할당하는 방법
FIFO(First In First Out): 먼저 들어온 작업이 먼저 나가는 것
단점: 비효율적, 프로세스 작업이 완전히 끝나는 걸 기다려야함
SJF(Shortest Job First): Burst Time이 짧은 프로세스를 먼저 실행
단점: 프로세스 종료 시간 예측 어려움
RR(Round Robin): 모든 프로세스에게 일정 시간만큼 할당
MLFQ(Multi Level Feedback Queue): 우선 순위에 따라 프로세스 할당
알고리즘 & 자료구조
시간 복잡도: 특정 알고리즘이 문제를 해결하는 데 걸리는 시간 (Big-O로 표시)
컴퓨터 사양이 모두 다르기 때문에 시간을 직접적으로 평가하기는 쉽지 않음
배열:
연속적으로 메모리에 할당되는 자료구조
연결 리스트:
모든 노드가 연결되어있는 자료구조
스택:
FILO LIFO 먼저 들어온 요소가 나중에 나가는 형태
큐:
FIFO 먼저 들어온 요소가 먼저 나가는 형태
덱:
tail, head에서 삽입/삭제가 가능한 형태
해시테이블:
키-값 구조로 데이터를 저장하는 자료구조
해시 함수: 입력값으로 고정된 길이의 해시값을 출력하는 함수
셋:
데이터의 중복을 허용하지 않는 자료구조
회고
Keep
매일 시간표대로 강의를 수강하고, 학습한 내용을 꼼꼼히 노션에 정리했다.
[미션] 노션에 정리한 내용을 토대로 미션을 해결했다.
Problem
해시테이블에 대해 이해가 부족하다는 생각이 들었다. 객체와 맵, 해시테이블의 차이점이 뭔지 정확히 알고 있어야 할 것 같다.
[미션] 해시 함수 작성할 때 해시값에 현재 배열의 길이를 나눈 나머지를 사용했는데, 이걸 더 깔끔한 방식으로 풀어야하는지 아직도 고민중이다.
Try
이번 주차 내용 복습하기
[미션] 이번 주차 미션 다시 풀어보기
댓글을 작성해보세요.