인프런 워밍업 클럽 스터디 2기 CS 1주차 발자국
회고
이미 어느 정돈 알고 있다고는 생각해도, 강의를 들으며 복습 겸 몰랐던 부분을 추가로 알 수 있어 좋았다.
운영체제와 자료구조 모두, 실무에서도 알고 구현하는 것과 모르고 구현하는 것은 차이가 있기 때문에 주기적으로 공부해야 한다.
특히 운영체제도 그렇고. 일부 도메인 실무에서 종종 쓰이는 락프리 알고리즘을 구현할 때 사용되는 것의 기본이 큐 자료구조라(스택으로도 구현이 가능하나 대부분 글로벌 큐를 사용하니), head에 이어 tail이 왜 필요한지 등을 놓치지 않고 설명해주셔서 좋았다.
운영체제 간단 요약
<운영체제의 커널>
- 인터페이스 통해 접근: 사용자의 직접 접근 불가
- GUI: 그래픽으로 된 인터페이스 / CLI: 텍스트로 상호작용
- 어플리케이션: 시스템 콜(인터페이스)을 통해 하드웨어 접근
<CPU 하드웨어 구조>
1. 제어 장치
- 모든 장치들의 동작을 지시하고 제어
2. ALU(산술논리 연산장치)
- 실질적인 연산을 담당
3. 레지스터
- CPU 내에서 계산을 위해 임시로 보관하는 장치
[인터럽트]
- 폴링 방식의 문제 해결
- 입출력 작업이 들어오면 입출력 관리자에게 명령을 내림
- ISR 인터럽트 서비스 루틴: 특정 인터럽트가 들어오면 이를 처리하는 함수.
- 비공기적으로 동작하기 때문에 성능에 이점
<컴퓨터 부팅 과정>
1. ROM에 저장된 바이오스 실행
2. 바이오스는 전원, CPU, 메모리, 키보드, 하드디스크 등
주요 하드웨어에 이상이 없는지 체크 (이상 있으면 부팅 X)
3. 바이오스가 부트로더-Ex.Window Boot Manager-를 메모리로 가져와서 실행
- 운영체제가 2개 이상 설치되어 있다면 어떤 운영체제 선택할지 나옴
4. 바이오스가 운영체제 메모리로 불러오고,
응용 프로그램은 메모리에 올라와서 운영체제가 관리
PCB(Process Control Block)
- 프로세스가 만들어지면 운영체제는
해당 프로세스의 정보를 가지고 있는 PCB를 만들고 저장
- PCB는 연결리스트: 운영체제는 프로세스가 종료되면
연결리스트에서 해당 프로세스의 PCB를 제거한다
<프로세스 상태>
1. 생성: 프로세스 생성 - 빈 스택, 빈 힙 등을 만들어 공간 확보,
PCB 만들어서 값을 초기화
2. 준비 (대부분의 상태): CPU 할당 대기
3. (대기): 실행 일시 중지
4. 실행 : 스케줄러 선택
5. 완료: PCB 제거
<문맥 교환 플로우>
프로세스01 인터럽트 발생 =>
현재 CPU의 레지스터 값 등을 현재 프로세스01 PCB에 저장
=> 타 프로세스02가 CPU를 사용하다가, 점유 시간이 다 되면
운영체제는 다시 인터럽트를 발생 시킴
<프로세스와 스레드>
프로세스: 서로 독립적, 안정성
- 프로세스 간에는 IPC 통신이 필요
스레드: 공유되는 공간에서 문제가 생길 수 있음,
스택영역 제외 공유 가능 - 오버헤드 적음
<CPU 스케줄링 목표>
1. 리소스 사용률
2. 오버헤드 최소화
3. 공평성
4. 처리량 증가
5. 대기시간 최소화
6. 응답시간 최소화
자료구조 간단 요약
연결 리스트(Linked List)
노드(Node)라는 요소들이 포인터를 통해 서로 연결되어 있는 자료구조
스택(Stack)
후입선출(LIFO, Last In First Out) 구조
큐(Queue)
선입선출(FIFO, First In First Out) 구조
해시 테이블(Hash Table)
키(Key)와 값(Value) 쌍으로 데이터를 저장
셋(Set)
데이터의 중복을 허용하지 않는 자료구조
댓글을 작성해보세요.