🔥딱 8일간! 인프런x토스x허먼밀러 역대급 혜택

인프런 워밍업 클럽 CS - 1주차 발자국 👣

인프런 워밍업 클럽 CS - 1주차 발자국 👣

운영체제

운영체제가 하는 일
==================
- 프로세스 관리
- 메모리 관리
- 하드웨어 관리
- 파일 시스템 관리


운영체제의 구조
==================

1. 커널
   - 프로세스와 메모리, 저장장치를 관리하는 핵심적인 기능을 담당한다.

2. GUI (Graphic User Interface)
   - 그래픽으로 된 인터페이스로 그래픽으로 커널과 상호 작용한다.

3. CLI (Command-Line Interface)
   - 유닉스나 리눅스 같은 운영체제가 기본적으로 제공하는 인터페이스로 텍스트를 이용해 커널과 상호 작용한다.

4. 시스템 콜
   - 어플리케이션은 시스템 콜을 통해서 커널에 접근할 수 있다.

5. 드라이버
   - 하드웨어와 커널의 인터페이스로는 드라이버를 사용한다.

인터럽트
==================
- 인터럽트는 폴링 방식의 단점을 해결한 방식이다.


프로세스
==================
- 실행 중인 프로그램이라고 할 수 있다.
- 프로세스는 운영체제에 의해 관리된다.

PCB (Process Control Block)
  - 프로세스가 만들어지면 운영체제는 해당 프로세스의 정보를 가지고 있는 PCB를 만들고 저장한다.


프로세스 상태
==================
- 프로세스는 시분할 처리를 위한 다섯 가지 상태를 가진다.
  1. 생성상태
  2. 준비상태
  3. 실행상태
  4. 대기상태
  5. 완료상태


컨텍스트 스위칭
==================
- 프로세스를 실행하는 중에 다른 프로세스를 실행하기 위해 실행 중인 프로세스의 상태를 저장하고 다른 프로세스의 상태값으로 교체하는 작업이다.


CPU 스케줄링
==================
- 운영체제는 모든 프로세스에게 CPU를 할당/해제하는데 이를 CPU 스케줄링이라고 한다.


CPU 스케줄링 알고리즘
==================

1. FIFO (First In, First Out)
   - 스케줄링 큐에 들어온 순서대로 CPU를 할당받는 방식이다.
   - 먼저 들어온 프로세스가 완전히 끝나야만 다음 프로세스가 실행될 수 있다.

2. SJF (Shortest Job First)
   - Burst Time이 짧은 프로세스가 먼저 실행되는 알고리즘이다.

3. RR (Round Robin)
   - 한 프로세스에게 일정 시간만큼 CPU를 할당하고 할당된 시간이 지나면 강제로 다른 프로세스에게 CPU를 할당한다.
   - 강제로 CPU를 뺏긴 프로세스는 큐의 가장 뒷부분으로 밀려난다.

4. MLFQ (Multi-Level Feedback Queue)
   - 프로세스의 우선순위를 동적으로 조정하는 알고리즘이다.

 

자료구조와 알고리즘

자료구조
==================
데이터가 어떤 구조로 저장되고 어떻게 사용되는지를 나타낸다.

1. 배열
   - 숫자나 문자열 등을 연속적으로 저장하는 자료구조

2. 연결리스트
   - 데이터를 담는 변수, 다음 노드를 가리키는 변수를 가지고 있는 노드들이 연결되어 있는 자료구조

3. 스택
   - 가장 나중에 들어온 데이터가 가장 먼저 나가는 자료구조

4. 큐
   - 가장 먼저 들어온 데이터가 가장 먼저 나가는 자료구조

5. 덱
   - 양쪽 끝에서 데이터 삽입/삭제가 가능한 자료구조

6. 해시테이블
   - 키 값 쌍으로 데이터를 저장하며, 빠른 검색, 삽입, 삭제가 장점인 자료구조

7. 셋
   - 중복을 허용하지 않는 자료구조


알고리즘
==================
어떤 문제를 해결하기 위한 확실한 방법을 말한다.

 

회고

코딩 테스트 문제를 Lv.1부터 풀다가 드디어 한계가 왔다..

자료구조와 알고리즘 공부가 1000000000% 필요한 순간이 왔...다..

겸사겸사 CS 공부를 제대로 공부하고 싶어 인프런 워밍업 클럽 CS 에 참가했다.

 

벌써 1주차가 마무리됐다. 되돌아보니, 그동안 너무 무작정 문제만 풀었던 것이 느껴졌다.

주로 사용했던 배열이 흔히 듣던 자료구조라는 걸 알게 되었고,

이제는 자료구조에 따라 데이터 처리 방법이 달라진다는 점을 인식하며 문제에 접근할 수 있게 되었다.

 

앞으로 공부를 더 진행하면서 그동안 수많은 좌절감을 느끼게 했던 코딩테스트 문제들을 이제 제대로 풀 수 있지 않을까 하는 기대감이 생겼다.

물론 내가 열심히 해야만 할 수 있는 문제!

앞으로도 스터디에 열심히 참여하고 CS 지식을 내 것으로 만들어야겠다!

 

댓글을 작성해보세요.

채널톡 아이콘