🌱앱 식물 키우기 오픈!

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

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

1주차 학습 내용 - 발자국


자료구조 & 알고리즘

 

자료구조

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

    • 예를들어 데이터를 변수에 담아 처리하는 평균을 구하는 식과 배열에 담아 평균을 구하는 식이 다른 로직으로 돌아가는 것 처럼?

알고리즘

  • 어떤 문제를 해결하기 위한 확실한 방법

  • 같은 자료구조에도 다양한 알고리즘(풀이법)이 존재하기 때문에 적합하다고 판단되는 것을 골라 사용하면 됨.

시간복잡도

  • 특정 알고리즘이 어떤 문제를 해결하는 데 걸리는 시간

  • 표기법은 빅오 표기법으로 사용하고 반복문이 한번 돌면 O(n)이라고 함. O(n) -> O(n²)

연결리스트

  • 데이터를 저장하는 선형 자료구조, 각 요소(Node)가 다음 요소를 가리키는 방식으로 연결된 구조

    • Node의 구성요소: data(자신), next(다음)

  • 장점: 아무 곳에 데이터를 생성하고 연결만 해주면 되기때문에 배열의 단점을 극복함

  • 단점: 배열은 인덱스를 통해 O(1)로 즉시 접근 가능하지만, 연결 리스트는 head부터 순차적으로 접근해야 하므로 O(n)의 탐색 시간이 필요함

     

스택(FILO)

  • 먼저 들어간 데이터가 나중에 나오는 자료구조

     

큐(FIFO)

  • 먼저 들어간 데이터가 먼저 나가는 자료구조

     

  • 데이터의 삽입과 제거를 자유롭게 할 수 있는 자료구조, 쉽게말해 스택 + 큐 같은 느낌

 

해시테이블

  • Key-Value(키-값) 쌍으로 데이터를 저장하는 자료구조

  • 장점: 빠른 데이터 읽기, 삽입, 삭제

  • 단점: 메모리를 많이 차지함

     

셋 

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


운영체제

커널

  • 운영체제의 핵심

  • 프로세스와 메모리, 저장장치를 관리하는 핵심적인 기능 담당

  • 사용자는 커널에 접근하기 위해 인터페이스(GUI, CLI)를 통해 접근 가능함.

CPU

  • 제어 장치, 산술논리 연산장치, 레지스터로 나뉨

폴링과 인터럽트

  • 폴링은 CPU가 하드웨어 쪽에서 어떤 일이 바로 발생하는지 인지할 수 없어서 입출력 명령이 왔는지 주기적으로 확인하여 작업을 완료하는 방식

  • 인터렙트는 이런 불필요하게 확인하는 폴링의 단점을 보완해서 CPU에서 입출력 명령을 내리고 다른일을 하다가 입출력이 완료 되었다는 신호를 받고 작업을 완료하는 방식

프로그램과 프로세스

  • 프로그램은 저장장치에 저장된 명령문의 집합체( 앱, .exe )

  • 프로세스는 실행중인 프로그램(하드디스크에 저장된 프로그램이 메모리에 올라갔을 경우 실행중이라고 함)

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

  • 멀티프로그래밍은 메모리로 여러개의 프로그램을 올려놓고 사용하는 것

  • 멀티프로세싱은 시분할 처리로 CPU가 각각의 프로세스를 짧은 시간 동안 교대로 실행하는 것

컨텍스트 스위칭

  • 프로세스를 동작하다가 다른 프로세스를 동작시키기 위해 현재 프로세스를 저장하고 다른 프로세스로 바꾸는 과정

  • 현재까지 진행된 CPU의 레지스터 값을 동작했던 프로세스에 저장하고, 나중에 다시 그걸 가지고 이어서 작업함.

CPU 스케줄링

  • 운영체제가 여러 프로세스의 실행을 기다릴 때, CPU를 어떤 순서와 방식으로 할당하고 해제할지를 결정하는 과정

FIFO

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

  • 단점: P1이 실행되는 동안 P2, P3가 기다려야해서 대기 시간 지며 CPU 사용률이 떨어짐.

SJF

  • 실행 시간이 제일 짧은 프로세스를 먼저 처리하는 방식

  • 단점: 프로세스가 얼마나 실행될지 알 수 없음, 실행시간이 긴 프로세스는 오랫동안 실행되지 않을수도 있음.

RR

  • 모든 프로세스에게 공평하게 CPU 시간을 할당하는 방식

  • 단점: 타임 슬라이스가 너무 길면 굉장히 끊기고, 너무 짧으면 컨텍스트 스위칭이 자주 일어나며 불필요한 처리를 해야함. 그래서 적절한 타임슬라이스를 지정해줘야 함.

MLFQ

  • 여러 개의 큐를 사용하여 우선순위를 동적으로 변경하는 방식

  • 짧은 작업은 낮은 타임슬라이스를 주고, 긴 작업은 높은 타임슬라이스를 부여함. (현대에서 제일 많이 사용)


1주차 회고

  • 비전공자여서 CS지식은 완전 0이라 복습을 자주 해야할 것같다고 생각했습니다.

  • 감자 강사님께서 강의는 지루하지 않고 이해가 편하도록 노력해서 만드신게 눈에 보였음(각종 더빙, 캐릭터들), 사물궁이라는 유튜버가 있는데 그 방식과 굉장히 흡사해서 재미있게 볼 수 있음.

     

  • 저같은 경우는 익숙하지가 않아서 한번 본다고 머리에 잘 들어오진 않아서, 대중교통 타거나 심심할때마다 반복해서 보면 자연스럽게 조금씩 이해가 되는거같아서 좋았습니다.

댓글을 작성해보세요.


채널톡 아이콘