반응형 CS(Computer Science)/운영체제26 [운영체제] 메모리 관리 물리적 메모리를 관리하는 방법에 대해 알아보자 메모리는 일반적으로 os상주영역과 사용자 프로세스 영역이 있다. 사용자 프로세스 영역은 연속할당과 불연속할당이 방법이 있다 연속할당 1. 고정분할 방식 - 프로그램이 들어갈 사용자 영역을 미리 파티션으로 나누어 놓음 - 물리적 메모리를 몇 개의 영구적 분할로 나눔 - 분할의 크기가 모두 동일한 방식과 서로 다른 방식이 존재 외부조각: 빈 공간인데 프로그램이 올라갈 수 없는 작은 분할 내부조각: 프로그램크기가 분할크기보다 작을 때 남는 메모리공간 2. 가변분할 방식 - 사용자 프로 미리 나눠놓지 않고 실행될때마다 순서대로 쌓는 것 - 프로그램 B가 끝나면 D는 공간이 안 맞아서 안 들어가고 외부조각으로 채움 - 프로그램의 크기를 고려해서 할당 Hole 발생 가.. 2023. 2. 20. [운영체제] 메모리 메모리에 대해 알아보자 논리적 주소 - 프로세스마다 독립적으로 가지는 주소 공간 - 각 프로세스마다 0번지부터 시작 - CPU가 보는 주소는 논리적 주소다 물리적 주소 - 메모리에 실제 올라가는 위치 ※ 주소 바인딩: 주소를 결정하는 것 상징적 주소 -> 논리적 주소 -> 물리적 주소 주소 바인딩이 언제 이뤄지는가 1. Compile time binding - 논리적 주소를 바탕으로 올린다 - 논리적 주소와 물리적 주소가 같다 - 컴파일러는 절대 코드 생성 - 시작 위치 변경시 재컴파일 - 지금은 사용하지 않는다 2. Load time binding - 메모리에 올라갈떄 물리적 주소가 결정된다 - 컴파일러가 재배치가능코드를 생성한 경우 가능 3. Execution(Run) time binding - 메모.. 2023. 2. 20. [운영체제] 교착상태(deadlock) 교착상태란 무엇인가? 그림을 보면 어느 누구도 움직이지 못하는 상황이다. 이처럼 자원이 모두 사용 중이어서 프로세스들이 계속 기다리는 상태를 교착상태라고 한다. Deadlock: 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태 - 자원(resource): 하드웨어, 소프트웨어 등을 포함하는 개념 - ex) 시스템에 2개의 tape drive가 있다. 프로세스 A와 B가 각각 하나의 tape drive를 보유한 채 다른 하나를 기다리고 있다. deadlock 발생의 4가지 조건 1. 상호배제: 매 순간 하나의 프로세스만이 자원을 사용할 수 있음 2. 비선점: 프로세스는 자원을 스스로 내어놓을뿐 강제로 빼앗기지 않음 3. 보유대기: 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을.. 2023. 2. 18. [운영체제] Concurrency Control 병행 제어 세마포어: 프로그래머 관점에서 동기화 문제를 해결 Monitor - 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct - 프로그래밍 언어차원에서 공유데이터에 동시접근하는 문제를 모니터가 자동으로 해결함 프로그래머에 부담을 줄여주는 방법 - 공유데이터에 접근할때는 접근 코드가 있는데 모니터 안에 정의되어있다. 모니터 안에 정의된 코드로만 접근할 수 있게 한다. - 모니터 내에서는 한번에 하나의 프로세스만이 활동 가능 - 프로그래머가 동기화 제약 조건을 명시적으로 코딩할 필요없음 - 프로세스가 모니터 안에서 기다릴 수 있도록 하기 위해 Condition variable 사용 - wait와 sign.. 2023. 2. 15. [운영체제] 프로세스 동기화의 고전적인 문제 1. Bounded-buffer Problem shared data: buffer 자체 및 buffer 조작 변수 semaphore full=0, empty=m, mutex=1 #producer do{ produce an item in x p(empty) p(mutex) add x to buffer v(mutex) v(full) }while(1) 2. Readers Writers Problem 한 process가 DB에 write 중일 때 다른 process가 접근하면 안됨 read는 동시에 여럿이 해도 됨 해결방법 writer는 대기 중인 Reader가 하나도 없을 때 DB접근이 허용된다 일단 Writer가 DB에 접근 중이면 Reader들은 접근이 금지된다 Writer가 DB에서 빠져나가야만 Read.. 2023. 2. 8. [운영체제] Semaphores Semaphores은 앞의 방식들을 추상화시킨 일종의 추상자료이다. 공유자원 획득과 반납을 도와준다 Semaphores s #자원의 개수 # p연산: 공유데이터 획득 while(s 2023. 2. 8. [운영체제] 프로세스 동기화 문제 & 해결방법 프로세스들은 수행의 동기화를 위해 변수를 공유할 수 있다 do{ entry section critical section exit section remainder section } while(1); entry로 lock을 걸어서 critical section 접근을 막고 exit를통해 다른 프로세스가 critical section에 진입할 수 있게한다 프로그램적 해결법의 충족 조건 1. Mutual Exclusion(상호 배제) - 프로세스가 critical section 부분을 수행중이면 다른 모든 프로세스들은 그들의 critical section에 들어가면 안 된다 2. Progress - 아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세.. 2023. 2. 7. [운영체제] 프로세스 동기화 & Race Condition 프로세스 간에 동기화에 대해 알아보자 E-box S-box CPU Memory 컴퓨터내부 디스크 프로세스 그 프로세스의 주소 공간 데이터가 저장되어 있는 storage box와 연산을 하는 execution box가 있다. 데이터를 s-box에서 읽어와서 연산을 하고 s-box에 다시 반영을 한다. 여기서 E-box가 여러 개인 경우가 생긴다. 저장공간을 혼자 사용하면 문제가 없는데 다른 실행박스와 공유한다고 하면 데이터 동기화 문제가 발생한다. 저장소에서 하나의 값에 대해서 한 실행박스는 1을 증가시키고 하나는 1을 감소시키려할 때 우리는 값은 변하지 않겠다라고 결과를 생각하게 된다. 하지만 실제 결과는 덧셈은 반영이 안돼고 1을 뺀 결과만 반영이 된다. 여러주체가 하나의 데이터에 동시에 접근하는 경우.. 2023. 1. 31. [운영체제] CPU 스케줄링 CPU 스케줄링의 핵심은 두 가지다. 1. 여러 작업이 들어올 때 누구를 먼저 할 것인가 2. 사용하고 있는 CPU를 언제 가져올것인가 스케줄링 알고리즘 스케줄링에는 CPU를 다 사용할때까지 기다리는 비선점형과 중간에 뺏을 수 있는 선점형이 있다. 1. FCFS(First Come First Served): 먼저 오면 먼저 사용 - 비선점형 - 나머지 작업들 CPU를 다 사용할 때까지 기다려야한다 - 비효율적 ※ convoy effect: CPU 사용시간이 긴 프로세스에 의해 사용시간이 짧은 프로세스들이 오래 기다리는 현상 이로 인해 평균 대기시간이 길어지게 된다. 2. SJF(Shortest job first): CPU를 사용하는 시간이 짧은 작업에 먼저 이용권을 준다 - average wait tim.. 2023. 1. 30. 이전 1 2 3 다음 728x90