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

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

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

[강의 내용]

운영체제

폴링과 인터럽트

  • 폴링 : CPU가 입출력 명령이 완료되었는지 주기적으로 확인하는 방식

    • CPU가 주기적으로 확인해줘야 하기 때문에 성능이 좋지 않음

  • 인터럽트 : 입출력 명령이 완료되면 CPU에게 신호를 주고 CPU는 신호를 받아 인터럽트 서비스 루틴을 실행시켜 작업을 완료하는 방식

    • 비동기적으로 동작하기 때문에 성능에 이점이 있음

    • 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트가 존재

프로그램과 프로세스

  • 프로그램 : 하드디스크에 저장되어 있는 실행파일(.exe 파일)

  • 프로세스 : 프로그램을 실행하여 해당 프로그램이 하드디스크에서 메모리로 올려져서 실행 중인 프로그램

멀티 프로그래밍과 멀티 프로세싱

  • 멀티 프로그래밍 : 하나의 CPU에서 여러 개의 프로세스를 메모리에 올려서 처리하는 기술

  • 멀티 프로세싱 : 여러 개의 CPU를 이용하여 프로세스를 처리하는 기술

PCB(Process Control Block)

  • 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구

  • PCB들은 연결 리스트 자료구조로 저장

프로세스 상태

  • 생성(new) : PCB를 생성하고 메모리에 프로그램 적재를 요청한 상태

  • 준비(ready) : 프로세스가 CPU를 사용 위해 기다리는 상태

  • 실행(running) : 프로세스가 CPU를 할당 받아 실행 중인 상태

  • 대기(waiting) : 프로세스가 특정 이벤트를 기다리는 상태

  • 완료(terminated) : 프로세스가 종료된 상태

컨텍스트 스위칭

  • 프로세스를 실행하는 중에 다른 프로세스를 실행하기 위해 실행 중인 프로세스 상태를 저장하고 다른 프로세스의 상태값으로 교체하는 작업

     

쓰레드

  • 프로세스 내부에 존재하는 운영체제가 실행하는 단

  • 쓰레드는 프로세스의 PCB, 코드, 데이터, 스택, 힙을 공유

  • 프로세스에 문제가 생기면 프로세스를 공유하는 모든 쓰레드에 문제가 발생

스케쥴링

  • 프로세스에게 CPU를 할당/해제하는 알고리듬

  • 어떤 프로세스에게 얼마의 시간 동안 CPU를 할당할지에 따라 스케쥴링이 결정됨

FIFO(First In First Out)

  • 먼저 들어온 프로세스가 먼저 처리하는 방식

  • 프로세스가 끝나지 않으면 다음 프로세스를 실행할 수 없음

     

SJF(Shortest Job First)

  • 버스트 타임이 가장 짧은 프로세스를 먼저 실행하는 방식

  • 어떤 프로세스가 얼마나 실행될지 예측할 수 없기 때문에 실제로는 구현되지 못한 스케쥴링

  • 버스트 타임이 짧은 프로세스가 계속 들어오면 버스트 타임이 긴 프로세스는 계속 실행할 수 없는 기아 상태가 발생하게 됨

     

RR(Round Robin)

  • 프로세스에게 CPU를 할당하고 일정 시간이 지나면 현재 프로세스의 CPU를 다른 프로세스에게 할당하는 방식

  • 타임 슬라이스가 크면 먼저 들어온 프로세스를 먼저 처리하는 FIFO 스케쥴링과 같아짐

  • 타임 슬라이스가 작으면 프로세스의 처리량보다 컨텍스트 스위칭의 처리량이 커짐

MLFQ(Multi Level Feedback Queue)

  • 여러 개의 우선순위를 가진 큐를 사용

  • 높은 우선순위를 가진 큐는 타임 슬라이스가 작고 낮은 우선순위를 가진 큐는 타임 슬라이스가 큼

  • 프로세스가 스스로 CPU를 반납하면 CPU 사용이 적다는 의미로 I/O 바운드 프로세스일 가능성이 높음

  • 프로세스가 타임 슬라이스를 오버하여 CPU를 강제로 뺏기면 CPU 사용이 많다는 의미로 CPU 바운드 프로세스일 가능성이 높음

 

자료구조와 알고리듬

자료구조

  • 데이터가 어떤 구조로 저장되고 어떻게 사용되는지를 나타내는 용어

    • 가장 간단한 자료구조는 변수

  • 변수를 어떤 규칙에 따라 생성하고 사용하는지에 따라서 배열, 스택, 큐 등의 다양한 자료구조가 됨

시간 복잡도

  • 알고리듬의 성능을 측정하는 척도

    • 실제 성능을 측정하지 않고 연산의 횟수를 계산하여 대략적인 성능을 측정

    • 알고리듬에서 성능에 가장 큰 영향을 주는 연산은 반복문

  • 표기법

    • 빅 오(Big-O) 표기법은 함수의 상한을 표기

    • 빅 오메가(Big-Ω) 표기법은 함수의 하한을 표기

    • 빅 세타(Big-θ) 표기법은 함수의 평균을 표기

       

배열(Array)

  • 프로그래머가 요청한 크기만큼 메모리에 연속된 공간을 할당

    • 프로그래머가 처음 요청한 크기의 공간을 변경하기 어려움

    • 필요한 메모리 공간의 크기를 몰라서 처음부터 많은 메모리 공간을 할당하는 경우가 많아 메모리 낭비가 심함

  • 배열은 데이터를 탐색할 때 인덱스를 사용하여 데이터에 바로 접근할 수 있기 때문에 탐색 성능은 O(1)의 성능을 가짐

  • 배열은 데이터를 삽입, 삭제할 때 삽입, 삭제하는 데이터의 인덱스 위치 이후에 있는 모든 데이터를 이동 시켜야 하기 때문에 삽입, 삭제 성능은 O(n)의 성능을 가짐

연결 리스트(Linked List)

  • 각 노드가 데이터를 담는 변수 하나와 다음 노드를 가리키는 변수로 이루어진 자료구조

    • 다음 노드를 가리키는 변수가 있어 필요할 때 새로운 노드를 생성하여 연결해줄 수 있음

    • 연결 리스트의 첫 번째 노드의 주소만 알고 있으면 다른 모든 노드로 접근이 가능

  • 연결 리스트는 데이터를 탐색할 때 첫 번째 노드부터 단계적으로 탐색해야 하기 때문에 탐색 성능은 O(n)의 성능을 가짐

  • 연결 리스트는 새로운 노드를 삽입, 삭제할 때 노드를 탐색 후 새로운 노드를 삽입, 삭제만 하면 되기 때문에 삽입, 삭제 성능은 O(1)의 성능을 가짐

스택(Stack)

  • 가장 최근에 들어온 데이터가 가장 먼저 나가는 LIFO(Last In First Out) 방식의 자료구조

  • 스택은 데이터를 탐색할 때 모든 데이터를 삭제하면서 읽고 삭제한 데이터를 다시 스택에 넣어줘야 하기 때문에 탐색 성능은 O(n)의 성능을 가짐

  • 스택은 데이터를 삽입할 때 스택의 맨 위에 데이터를 삽입하기 때문에 삽입 성능은 O(1)의 성능을 가짐

  • 스택은 데이터를 삭제할 때 스택의 맨 위에 있는 데이터를 삭제하기 때문에 삭제 성능은 O(1)의 성능을 가짐

큐(Queue)

  • 가장 먼저 들어온 데이터가 가장 먼저 나가는 FIFO(First In First Out) 방식의 자료구조

  • 큐도 스택처럼 데이터를 탐색할 때 모든 데이터를 삭제하면서 읽고 삭제한 데이터를 다시 큐에 넣어줘야 하기 때문에 탐색 성능은 O(n)의 성능을 가짐

     

  • 큐는 데이터를 삽입할 때 큐의 맨 뒤에 데이터를 삽입하기 때문에 삽입 성능은 O(1)의 성능을 가짐

  • 큐는 데이터를 삭제할 때 큐의 맨 앞에 있는 데이터를 삭제하기 때문에 삭제 성능은 O(1)의 성능을 가짐

덱(Deque)

  • 덱은 double-ended queue로 데이터를 head, tail 양쪽 방향에서 삽입, 삭제가 가능한 자료구조

     

    • 스택과 큐의 특징을 모두 가짐

       

    해시 테이블(Hash Table)

  • Key-Value를 한 쌍으로 데이터를 저장하는 자료구조

    • 배열 안에 연결 리스트를 생성하여 같은 인덱스를 갖는 데이터를 연결하는 방식으로 데이터를 저장

    • 해시 함수를 이용하여 Key 값을 인덱스로 변경하여 해시 테이블에 골고루 퍼지게 저장하는 것이 성능의 핵심

      • 따라서 해시 함수의 성능이 매우 중요

  • 해시 테이블은 데이터를 탐색할 때 Key 값만 알면 데이터에 바로 접근할 수 있기 때문에 탐색 성능은 O(1)의 성능을 가짐

  • 해시 테이블은 데이터를 삽입, 삭제할 때 Key 값을 이용하여 데이터를 바로 삽입, 삭제하기 때문에 삽입, 삭제 성능은 O(1)의 성능을 가짐

해시 셋(Hash Set)

  • Key 값만 사용하여 해시 테이블에 저장하는 자료구조

    • Key 값이 Key이면서 Value가 됨

    • Key와 Value가 같기 때문에 중복된 데이터를 저장할 수 없음

1주차 강의 회고

  • 발자국의 내용 요약을 작성할 때 진짜로 내용을 요약한 것이 아닌 알고 있는 내용을 나열한 것 같아서 다음 작성할 때는 좀 더 핵심 내용만 작성해 볼 것

  • 다음 주에는 강의 내용 이외의 내용들을 더 세세하게 찾아보면서 강의를 학습하며 1주차의 강의를 복습해 나갈 것


[미션]

미션을 해결하는 과정

  • 일단 미션의 내용을 보고 알고 있는 내용을 전부 작성한 후 미션의 내용과 맞는 강의 내용을 찾아보면서 미션을 해결

1주차 미션 회고

  • 미션을 해결할 때 강의 내용을 찾아보기 전에 이미 알고 있는 내용을 좀 더 생각해서 나열해 보고 해결 방법을 찾는 것이 좋을 것 같음

댓글을 작성해보세요.

채널톡 아이콘