전체 글 34

[CS] {운영체제} 메모리 관리 방식

1. 연속 메모리 할당: 프로세스에 연속적인 메모리 공간을 할당 1) 스와핑- 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고 빈 공간에 새 프로세스 적재 > 이점- 프로세스들이 요구하는 메모리 공간 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행할 수 있음. 2) 메모리 할당- 프로세스는 메모리의 빈 공간에 할당되어야 한다.- 빈 공간이 여러개 있다면?> 최초 적합, 최적 적합, 최악 적합(1) 최초 적합: 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식- 검색 최소화, 빠른 할당 (2) 최적 적합: 운영체제가 빈 공간을 모두 검색해본 뒤, 적재 가능한 가장 작은 공간에 할당 (3) 최악 적합..

CS 공부 2025.05.03

[CS] {운영체제} 교착상태(데드락)

1. 교착상태(데드락)란? > 식사하는 철학자 문제 ( 대표적인 교착상태를 나타내는 예시 )모든 철학자가 왼쪽의 포크를 들면 그 누구도 오른쪽 포크가 없어서 식사를 할 수 없다.철학자 : 프로세스, 포크 : 자원, 식사행위 : 실행 > 교착상태를 해결하기 위해서1) 교착상태가 발생했을 때의 상황을 정확히 표현해보기=> 자원할당 그래프- 교착상태 발생 조건 파악 가능- 어떤 프로세스가 어떤 자원을 할당 받아 사용 중인지 확인 가능a. 프로세스는 원으로, 자원의 종류는 사각형으로 표현b. 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현c. 프로세스가 어떤 자원을 할당 받아 사용중이라면 자원에서 프로세스를 향해 화살표를 표시d. 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를..

CS 공부 2025.04.25

[CS] {운영체제} 동기화 기법

1. 뮤텍스 락: 상호배제를 위한 동기화 도구(자물쇠 역할), 뮤텍스 락 > 뮤텍스 락의 단순한 형태- 전역 변수 하나, 함수 두 개자물쇠 역할 : 프로세스들이 공유하는 전역 변수 lock임계 구역을 잠그는 역할 : acquire 함수임계 구역의 잠금을 해제하는 역할 : release 함수 1) acquire 함수프로세스가 임계 구역에 진입하기 전에 호출임계 구역이 잠겨 있다면 열릴 때까지 임계 구역을 반복적으로 확인(lock이 false가 될 때까지)임계 구역이 열려 있다면 임계 구역을 잠그기(lock을 true로 바꾸기)2) release 함수임계 구역에서의 작업이 끝나고 호출현재 잠긴 임계 구역을 열기(lock을 false로 바꾸기)3) 바쁜 대기(busy-waiting)- 임계구역이 잠겨있는지를 ..

카테고리 없음 2025.04.23

[CS] {운영체제} 동기화

동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고받는다.이 과정에서 자원의 일관성을 보장해야 한다. (= 프로세스들의 동기화를 고려해야 한다) Q. 동기화란?: 공동의 목적을 위해 동시에 수행되는 프로세스(ex. 워드 프로세서 프로그램 - 맞춤법 검사 프로세스, 입력 내용을 화면에 출력하는 프로세스...)-> 올바른 수행을 위해 프로세스들은 아무렇게나 실행되지 않고 동기화되어야 한다. 1) 동기화의 의미(1) 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기> reader writer problemWriter - Book.txt 파일에 값을 저장하는 프로세스Reader - Book.txt 파일에 저장된 값을 읽어들이는 프로세스-> Reader와 Writer 프로세스는 무작정 실행되어선 ..

CS 공부 2025.04.22

[CS] {운영체제} CPU 스케줄링

1. CPU 스케줄링 개요1) CPU 스케줄링이란?: 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 2) 프로세스 우선순위- 입출력 작업이 많은 프로세스(=입출력 집중 프로세스)의 우선순위는 CPU작업이 많은 프로세스(=CPU 집중 프로세스)의 우선순위보다 높다(입출력 집중 프로세스는 잠깐 실항하면 당분간 대기상태로 접어들기 때문에) (1) 스케줄링 큐a. 준비큐b. 대기큐 (2) 선점형/비선점형 스케줄링a. 선점형 스케줄링- 위에서 설명한 스케줄링 방법이 보통 선점형 스케줄링장점 : 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 배분할 수 있다.단점 : 그만큼 문맥 교환 과정에서 오버헤드가 발생할 수 있다. b. 비선점형 스케줄링- 한 프로세스가 작업이 종료..

CS 공부 2025.04.21

[CS] {운영체제} 프로세스와 스레드

1. 프로세스 개요> 프로세스들은 돌아가며 한정된 시간 만큼만 CPU 이용- 타이머 인터럽트가 발생하면 차례 양보. 1) 프로세스 제어블록(= PCB)- 빠르게 번갈아 수행되는 프로세스들을 관리- 이를 위해 사용하는 자료구조가 프로세스 제어블록(PCB)프로세스 관련 정보를 저장하는 자료구조상품에 달린 태그와 같은 정보프로세스 생성 시 커널 영역에 생성, 종료 시 폐기> PCB에 담기는 대표적인 정보프로세스 ID (=PID) : 특정 프로세스를 식별하기 위해 부여하는 고유한 번호레지스터 값 : 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원 => 실행 재개프로세스 상태 : 입출력 장치 사용 대기 상태, CPU 사용 대기 상태 등등메모리정보 : 프로세스가 어느 주소에 저장되..

CS 공부 2025.04.19

[CS] {운영체제} 운영체제란?

1. 운영체제를 알아야 하는 이유▶ 운영체제란?실행한 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램운영체제는 커널영역에 적재되는 프로그램응용프로그램을 메모리 내 빈공간에 주소를 할당CPU도 관리입출력장치 관리하드웨어와 응용프로그램간의 연결다리-> 운영체제 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없음! > 운영체제는 프로그램을 만드는 프로그램이다=> 그렇기에 프로그램을 만드는 개발자는 운영체제를 알아야 한다! 2. 운영체제의 큰 그림1) 커널- 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나- 이러한 운영체제의 핵심 서비스를 담당하는 부분을 '커널'이라고 함.(이하 운영체제는 커널을 뜻함. 특별 언급은 제외)(= 자동차의 엔진..

CS 공부 2025.04.16

[CS] {컴퓨터 구조} 입출력장치

1. 장치 컨트롤러와 드라이버1) CPU - 입출력장치 정보 주고받기> 입출력장치는 앞서 학습한 CPU, 메모리보다 다루기가 더 까다로움.(1) 입출력장치에는 종류가 너무나도 많다- 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기 어렵다. (2) 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다* 전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표=> 이런 이유로 입출력 장치는 장치 컨트롤러(= 입출력 제어기, 입출력 모듈)를 통해 컴퓨터와 연결된다. 2) 장치 컨트롤러의 역할- CPU와 입출력장치 간의 통신중개- 오류 검출- 데이터 버퍼링* 버퍼링 : 전송률이 높은 장치와 낮은 장치사이에 주고받는 데이터를 "버퍼"라는 임시 저장공간에 저장하여 전송..

CS 공부 2025.04.15

[CS] {컴퓨터 구조} 보조기억장치

1. 하드디스크- 자기적인 방식으로 데이터 저장- 기본적으로 트랙과 섹터 단위로 데이터 저장 * 실린더 : 여러겹의 플래터 상에서 같은 트랙이 위치 한 곳을 모아 연결한 논리적 단위- 연속된 정보는 한 실린더에 기록 * 하드 디스크가 저장된 데이터에 접근하는 시간  (1) 탐색 시간: 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간  (2) 회전 지연: 헤드가 있는 곳으로 플래터를 회전시키는 시   (3) 전송 시간: 하드디스크와 컴퓨터간에 데이터를 전송하는 시간2. 플래시 메모리- 전기적으로 데이터를 읽고 쓰는 반도체 기반 저장 장치- 플래시 메모리는 하드 디스크와 달리 덮어쓰기가 불가능- 읽기와 쓰기는 페이지 단위로 이루어짐- 삭제는 (페이지보다 큰) 블록 단위로 이루어짐+ 페이지의 상태(..

CS 공부 2025.04.13

[C#] 가비지 컬렉터 (Garbage Collector)

1. 개념: C#, JAVA와 같은 Managed Language에 존재하며 더 이상 사용하지 않는 객체, 데이터를 자동으로 탐지하고 메모리에서 제거해주는 시스템. C#에서 GC는 .NET 프레임워크의 일부로, 개발자가 메모리 관리에 신경을 덜 쓰도록 도움.힙 영역에서 동작.2. 동작원리- Mark And Sweep 알고리즘을 사용하여 동작. 1) 마킹(Marking) : GC는 루트 오브젝트로부터 시작하여 모든 접근가능한 객체들을 마킹합니다.* 루트 오브젝트 - 정적변수(Static), 스택영역의 변수, CPU 레지스터 2) 스위핑(Sweeping): 마킹되지 않은 객체들을 힙에서 제거하여 메모리를 회수 3) 컴펙션(Compaction) : 남아있는 객체들을 힙의 시작부분으로 이동시켜 메모리 단편화를 ..

C# 공부 2025.04.11