Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

Computer Science40

4. 스레드 🖥️ 스레드 🖥️ 스레드(thread)는 프로세스를 구성하는 '실행 흐름의 단위' 스레드의 구성 요소 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보 프로세스의 스레드들은 프로세스의 자원을 공유함! 스택 영역만 각자 가지고 코드, 데이터, 힙 영역은 공유하는 것 (요즘은 프로세스 단위보다 스레드 단위로 CPU 할당, 해제 케이스가 많음) 멀티 프로세스와 멀티 스레드 동일한 작업을 수행하는 단일 스레드 프로세스 여러 개 실행 -> 멀티 프로세스 하나의 프로세스를 여러 스레드로 실행 -> 멀티 스레드 프로세스끼리는 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내 자원을 공유하며 실행된다. 프로세스를 fork하면 코드/데이터/힙/스택 영역 등 모든 자원이 '복.. 2023. 8. 29.
3. 프로세스 상태와 계층 구조 🖥️ 프로세스 상태와 계층 구조 🖥️ 프로세스의 상태는 운영체제마다 차이가 있지만, 크게는 아래와 같다. 1. 생성 상태 - 메모리에 적재되어 PCB를 할당 받은 상태 2. 준비 상태 - CPU를 할당 받아 실행할 수 있지만,자신의 차례가 아니라 기다리는 상태 - 자신의 차례가 오면 실행 상태로 변경 (준비 상태 -> 실행 상태가 되는 것을 '디스패치'라고 함) 3. 실행 상태(running state) - CPU를 할당 받아 실행 중인 상태 - 할당된 시간을 모두 사용 시 준비 상태로 변경(타이머 인터럽트 발생 시) - 실행 도중 입출력 장치를 사용하면(입출력 인터럽트) 입출력 작업이 끝날 때까지 대기 상태로 4. 대기 상태(block state) - 프로세스가 실행 도중 입출력 장치를 사용하는 경우 .. 2023. 8. 28.
2. 프로세스 개요 🖥️ 프로세스 개요 🖥️ 포그라운드 프로세스(foreground process) - 사용자가 볼 수 있는 공간에서 실행되는 프로세스(게임, 워드 등) 백그라운드 프로세스(background process) - 사용자가 볼 수 없는 공간에서 실행되는 프로세스 1. 사용자와 직접 상호작용이 가능한 백그라운드 프로세스 2. 사용자와 상호작용하지 않고 정해진 일만 수행하는 프로세스 -> (데몬_daemon, 서비스 라고 부름) 프로세스 제어 블록 - 모든 프로세스는 실행을 위해 CPU가 필요하다. 하지만 CPU의 자원은 한정되어 있다! 위와 같이 프로세스들은 빠르게 번갈아가며 수행된다. 이를 위해 사용되는 자료구조가 '프로세스 제어 블록' (Process Control Block PCB) - 프로세스 관련 정보.. 2023. 8. 27.
1. 운영체제 intro 🖥️ 운영체제 🖥️ 운영체제는 현존 프로그램 중 규모가 가장 큰 프로그램 중 하나이다. (iOS만 봐도 용량이...) 운영체제가 제공하는 기능은 다양하지만, 가장 핵심적인 서비스는 존재한다. (커널이 담당함) ex. 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능.. 운영체제에는 속하지만 커널에는 속하지 않는 기능? - 유저 인터페이스(UI) GUI 혹은 커맨드라인 인터페이스는 사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아님. (충격) 이중모드와 시스템 호출 유저가 실행하는 프로그램(메모장 등)은 자원(CPU, 메모리 등)에 직접 접근할 수 있을까? -> No 위험하다. 운영체제가 중간에서 해줌. 슈퍼바이저 플래그를 통해 커널모드인 경우 , 사용자 모드.. 2023. 8. 27.
17. 다양한 입출력 방법 📱다양한 입출력 방법📱 1. 프로그램 입출력 프로그램 속 명령어로 입출력장치에 연결된 장치 컨트롤러를 제어하는 방법. 입출력 명령어를 통해 장치 컨트롤러와 상호작용 메모리에 저장된 정보를 하드디스크에 백업하는 상황을 가정해보자. (하드 디스크에 새로운 데이터 쓰기) -> CPU가 장치 컨트롤러의 레지스터 값을 읽고 쓰면서 프로그램 입출력 방식이 이루어짐. 그런데 CPU는 여러 장치컨트롤러의 레지스터들을 어떻게 알까? 방법 1. 메모리 맵 입출력 똑같이 메모리에 접근하기 때문에 명령어가 다를 필요가 없음. 방법 2. 고립형 입출력 입출력 전용 명령어가 실행되면 입출력장치에 접근(제어버스) 2. 인터럽트 기반 입출력 CPU 사이클을 효율적으로 관리할 수 있음. cf. 프로그램 입출력 방식에서는 CPU가 상태.. 2023. 8. 27.
16. 장치 컨트롤러, 장치 드라이버 📱장치 컨트롤러, 장치 드라이버📱 보조기억장치 포함, 모니터, 프린터, 헤드폰, 스피커 등 입력 장치들은 컴퓨터 내부와 어떻게 데이터를 주고받을까? '규격화의 어려움' '낮은 전송률' 장치 컨트롤러(하드웨어) - CPU와 입출력장치 간의 통신중개 (번역해준다고 생각) - 오류 검출 - 데이터 *버퍼링 * 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 '버퍼'라는 임시 저장 공간에 저장해서 전송률을 비슷하게 맞추는것. 장치 컨트롤러의 구조 장치 드라이버(소프트웨어) 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램 컴퓨터(운영체제)가 연결된 장치의 드라이버를 인식하고 실행할 수 있다면, 컴퓨터 내부와 정보를 주고받을 수 있다. 학습 출처: https://www.youtube.com/watch?v.. 2023. 8. 24.