CS/Operating System5 메모리 구조 Code - 프로그램의 코드 Data - 전역변수, static, const로 선언되어있는 변수 중 0이 아닌 값으로 초기화 되어있는 변수들을 저장 BSS - 전역변수, static, const로 선언되어있는 변수 중 0으로 초기화 또는 초기화가 되어 있지 않은 변수들을 저장 Heap - 동적 할당할 때 사용되고 런타임 시 크기가 결정 Stack - 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정 - 함수가 함수를 호출 하는 등에 따라 런타임시에도 크기가 변경될 수 있음 2023. 4. 3. 운영체제와 인터럽트 운영체제의 역할 - CPU 스케쥴링, 프로세스 관리, 메모리 관리, 디스크 파일 관리, I/O 디바이스 관리 인터럽트? - 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것 인터럽트 발생 조건 - I/O 디바이스(키보드, 마우스 등), 오류(프로세스, 어떤 수를 0으로 나눌 때) 인터럽트 흐름 - 인터럽트 발생 -> 인터럽트 벡터(인터럽트 핸들러 함수가 모여 있음)로 이동 -> 인터럽트 핸들러 함수 실행 하드웨어 인터럽트 : I/O 디바이스에서 발생 소프트웨어 인터럽트(트랩) : 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발생 2023. 4. 3. Race Condition Race Condition 발생 조건 1. 멀티프로세스/멀티스레드 환경 2. 두개 이상의 프로세스 또는 스레드가 같은 data에 접근할 때 Race Condition 이 발생하면 생기는 문제들 1. Mutual exclusion - 두 개 이상의 프로세스 또는 스레드가 공용 데이터에 동시에 접근을 하는 것을 막아야 함 2. Deadlock - 프로세스 또는 스레드가 각자 필요한 자원에 접근을 시도 할 때 서로 상대방의 작업이 끝나기만을 기다리는 상태 3. Starvation - Deadlock 상태가 계속 지속되어 프로세스나 스레드가 더 이상 작업을 영구적으로 진행할 수 없는 상태 Race Condition 해결 방법 1. Mutex - 공유 자원에 lock을 걸어 하나의 프로세스나 스레드만 접근 가능 .. 2023. 3. 24. 프로세스 vs 스레드, 멀티프로세스 vs 멀티스레드 프로세스(Process) 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다. 프로세스는 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시 자료를 갖는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 Heap을 포함한다. 프로세스 제어 블록(Process Control Block, PCB) PCB 는 특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조이다. 운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB 를 생성 한다. 프로세스.. 2023. 3. 24. Blocking vs Non-Blocking & Sync vs Async Blocking, Non-Blocking 과 Sync, Async 의 차이점은 '관점'을 어디에 두느냐 이다. Blocking, Non-Blocking은 제어의 관점 Sync, Async 은 결과의 관점 Blocking A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것 Non-blocking A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것. Synchronous A 함수가 B 함수를 호출 할 때, B 함수의 결과를 A 함수가 처리하는 것. Asynchronous A 함수가 B 함수를 호출 할 때, B 함수의 결과를 B 함수가 처리하는 것. Sync - Blo.. 2023. 3. 24. 이전 1 다음