인프런 워밍업 클럽 스터디 2기 CS 1주차 발자국

인프런 워밍업 클럽 스터디 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)

데이터의 중복을 허용하지 않는 자료구조

댓글을 작성해보세요.

채널톡 아이콘