inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[CS스터디] 1주차 발자국

권아윤
1

강의

https://www.inflearn.com/course/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B8%B0%EB%B3%B8

https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C

자료구조와 알고리즘

배열

스택 (LIFO)

Push, pop, peek, isEmpty -> 연결리스트로 구현

 

큐(FIFO)

Enqueue, dequeue, front, isEmpty -> 이중연결리스트로 구현

 

운영체제

구조

 

인터럽트

 

프로그램과 프로세스

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

 

PCB (Process Control Block)

: 멀티 프로세싱을 위해서 OS는 해당 프로세스의 정보를 가지고 있는 것

 

프로세스 상태

시분할 -> 여러 프로세스를 돌아가며 실행, 속도가 빨라서 동시처럼 보이지만 한번에 한 프로세스밖에 실행할 수 있음

 

컨텍스트 스위칭

A 프로세스를 실행하는 중에 다른 B 프로세스를 실행하기 위해 실행 중이였던 A 프로세스 상태를 저장하고 다른 B 프로세스의 정보를 가져오는 상황

이때 PCB(상태 저장하는 곳) 내용이 변경 됨

  1. 프로세스 할당 시간 끝남

  2. 운영체제는 인터럽트를 발생시킴

  3. 현재 CPU의 레지스터 값을 PCB A에 저장

  4. PCB B에 있는 값으로 CPU 레지스터 세팅

    1. 프로그램 카운터(PC) 정보 포함: 다음 실행할 명령어의 주소 -> 바로 B실행 가능

  5. B의 할당 시간 끝남

  6. 인터럽트 발생

  7. B의 상태를 PCB B에 저장

  8. PCB A에서 A의 상태를 가져오고 다시 A를 실행

입출력 요청, 점유시간이 끝남, 인터럽트가 있을 때 등..

 

프로세스 생성과 종료

  1. .exe 실행

  2. 프로그램의 code영역과 data영역을 메모리에 로드

  3. 빈 스택과 빈 힙을 만듦

  4. PCB 생성 후 값 초기화

     

    일련의 과정은 부팅되고 0번 프로세스(부모) 실행할 때 딱 한번 실행

  5. 이후엔 0번 프로세스를 복사(fork)해서 사용 (자식)

     

    복사할 때 모든 프로세스 내용(code, data, heap, stack)과 PCB내용을 전부 복사해 옴

  6. 이 후 exec함수를 실행시키면 본인이 원하는 값으로 덮어쓰게 됨

쓰레드

프로세스가 많아질수록 차지하는 메모리가 많이 차지하기 때문에 필요 -> 한개의 프로세스 내에 n개의 쓰레드가 있음

Code, data, heap을 공유하며, stack은 쓰레드마다 하나씩 가지고 있음

쓰레드 id와 Thread Control Block (TCB) 생김

-> 운영체제가 작업을 처리하는 단위는 프로세스가 아닌 쓰레드임

 

CPU 스케줄링

  1. 어떤 프로세스

  2. 얼마의 시간동안

다중큐

준비, 대기상태는 큐로 존재

실행->준비: 우선순위를 보고 그에 맞는 준비 큐에 PCB를 넣음

 

스케줄링 목표

 

스케줄링 알고리즘

FIFO

스케줄링 큐에 들어온 순서대로 할당

앞선 프로세스가 완전히 끝나야만 다음 프로세스가 실행할 수 있음

평균대기시간이 순서에 따라 차이가 심하게 남 -> 성능 차이 -> 일괄처리시스템에 보통 사용

 

미션

운영체제

  1. 인터럽트 방식으로 해결

2. 프로그램: .exe형식의 애플리케이션

프로세스: 실행 중인 프로그램

3. 멀티프로그래밍: 여러 프로그램을 실행

멀티프로세싱: (CPU관점) cpu가 여러 프로세스를 처리

4. PCB를 사용하여 멀티 프로세싱을 가능하게 관리함

5. 어떤 프로세스 실행 중에 다른 프로세스를 실행하기 위해 원래 프로세스 정보를 저장해두고 다른 프로세스를 처리하는 것

자료구조와 알고리즘

1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.

이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?

이유를 함께 적어주세요.

프로그램의 목표: 저장 및 열람을 해야 함

교실의 학생 정보: 자주 바뀌지 않음

열람: 조회는 자주 함

삽입 삭제는 자주 일어나지 않지만 조회는 많이 한다면 배열을 선택하는 것이 좋음

2. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다.

주문은 들어온 순서대로 처리됩니다.

이 때 여러분이라면 어떤 자료구조를 선택하실 건가요?

이유를 함께 적어주세요.

들어온 순서대로라면 fifo 즉 큐 자료구조가 필요하다

답변 0