운영체제
-
15. 메모리 낭비 방지운영체제/운영체제 정리 2020. 1. 5. 00:23
보조기억장치 안에는 OS 및 다른 실행 파일들이 들어있다. 처음에 power On을 하면 OS는 메인 메모리로 올라간다. 그 후 다른 실행 파일들인 프로그램들이 메인 메모리로 올라오게 된다. OS에서 가장 중요한 점은 CPU를 관리해야 하는 점이었다. 즉 이제 까지 우리는 OS의 Process management를 살펴보면서 CPu scheduling과 동기화 문제들을 다루었었고 이제는 OS에 memory management를 다루어 보려고 한다. H/W들 즉 자원들을 적절히 관리하여 Application들에게 나누어 주는 게 OS였고 이제는 두 번째로 중요한 메인 메모리 관리에 대해서 얘기해보자. 시간이 지나면서 처리하는 데이터가 커지고 프로그램 크기가 증가하면서 메모리에 용량은 커졌지만 여전히 메모리..
-
14. 모니터운영체제/운영체제 정리 2019. 12. 31. 00:57
동기화의 또 다른 도구인 모니터는 세마포어 이후에 나왔다. 세마포어에 구조는 int value 하나와 큐 하나가 존재하고 acquire()과 release() 를 통해 value를 감소하고 증가시키면서 0 미만이면 acquire()를 호출해 큐에 프로세스(스레드) 를 갖히게 하고 0보다 크면 큐에 잡혀있는 프로세스(스레드)를 깨우는 방식이었다. 모니터 역시 공유자원 + 공유자원 접근 함수가 존재한다. common variable과 common variable에 접근할 수 있는 함수들이다. 그리고 두 개의 큐가 존재하는데 앞에 큐는 상호 베타를 위해 존재한다. 즉 common variable에 접근할 수 있는 함수들이 있는데 이 메서드들에 접근하려면 한 스레드만 접근할 수 있다는 뜻이다. 이미 다른 스레드..
-
13. 교착상태 ( Deadlock)운영체제/운영체제 정리 2019. 12. 15. 00:13
프로세스는 실행을 위해 여러 자원을 필요로 한다. 하드웨어들을 자원들이라고 하고 이 자원들을 사용하는 프로그램들이 Applications 들이다. 중간에 O/S는 자원을 App에 잘 나누어 주도록 도와준다. 한정된 자원에 프로세스는 많으니 O/S는 잘 나누어 주어야 하고 잘 나누어주지 않는다면 교착상태에 빠질 수 있다. 어떤 자원은 갖고 있으나 다른 자원은 갖지 못하여 대기하는 것 (이와 동시에 다른 프로세스 역시 다른 자원을 가지려고 대기) 교착 상태에 일어나는 조건을 살펴보니 이 4가지 조건을 모두 만족해야 교착 상태가 일어날 수 있다. 1. Mutual exclusion ( 상호 베타 ) >한 프로세스가 사용 중이라면 다른 프로세스는 기다려야 한다는 것. 상호 배타적 식사하는 철학자 예) 한 젓가락..
-
12. 임계구역과 세마포어운영체제/운영체제 정리 2019. 11. 18. 00:50
임계 구역 (Critical-Section Problem) 이란 - 멀티 스레드로 이루어진 환경에서 각각의 스레드는 어떤 코드 영역을 가지고 있는데 그 영역은 스레드들이 공통으로 사용하는 변수나 테이블이나 파일을 업데이트하는 부분이다. 이 영역을 임계 구역이라고 한다. 그렇다면 이런 임계구역을 어떻게 해결해야 할까? 1. 상호배타( Mutual exclusion ) - 오류가 일어나지 않으려면 공통된 부분의 update는 상호 배타적이어야 한다. 한 스레드가 공통으로 사용하는 변수를 업데이트 다 한 후에야 다른 스레드가 접근할 수 있다. 즉 오직 한 스레드만 진입할 수 있다. 2. 진행 ( Progress ) - 이 임계 구역에 누가 먼저 들어갈 것인가 하는 결정은 유한 시간 내에 결정되어야 한다. 3...
-
11. 프로세스와 쓰레드운영체제/운영체제 정리 2019. 11. 11. 00:20
프로세스는 기본적으로 메인 메모리에 올라와있는 프로그램을 말한다. 프로세스는 프로세스에 의해 만들어진다. 즉 한 프로세스는 부모 프로세스를 가진다. OS는 부팅 후 첫 번째 프로세스를 만든다. 그러면 그 프로세스는 여러 자식 프로세스를 만들게 된다. PID : 프로세스들에게 각각의 unique한 번호를 부여하는 것. 파일을 생성하는 시스템 콜은 open() 인 것처럼 역시 프로세스를 생성하는 시스템 콜이 있는데 바로 fork() 이다. 호출 시 새로운 프로세스를 만들게 되고 만들어진 프로세스를 메인 메모리에 가져오는 콜을 exec() 이라고 한다. 프로세스 종료하는 콜은 exit()이다. exit()을 호출하면 해당 프로세스가 가진 모든 자원을 모두 회수하고 그 자원은 O/S가 가져가서 다른 프로세스에게..
-
10. CPU 스케쥴링운영체제/운영체제 정리 2019. 10. 28. 21:32
CPU Scheduling Algorithms -FCFS ( First-Come, First-Served) -SJF ( Shortest Job First) -Priority -RR (Round-Robin) -Multilevel Queue -Multilevel Feedback Queue 1. FCFS ( First-Come, First-Served ) : 먼저 온 프로세스를 먼저 서비스해준다. p1 (Burst time : 24ms ), p2 ( Burst time : 3ms) , p3 ( Burst Ttme : 3ms ) 순으로 들어왔다고 가정해보자. p1은 아무도 안 기다렸으므로 0 p2는 24ms를 기다리고 p3은 27ms를 기다렸으니 평균 대기시간은 17ms이다. 만약 p3, p2, p1 순으로 왔..
-
9. 문맥전환, 선점과 비선점운영체제/운영체제 정리 2019. 10. 13. 22:30
문맥 전환 -Scheduler -dispatcher -context switch overhead 문맥 전환 ( Context Switching ) 이란? CPU는 하나고 프로세스가 여러 개이기 때문에 어느 시점에는 하나의 프로세스에게 서비스를 할당하고 있을 것이다. 그때 한 프로세스에서 다음 프로세스로 서비스 할당이 넘어가면 이를 문맥 전환이라 한다. 전에 말했듯이 Ready Queue안에 프로세스들은 CPU의 서비스를 받기 위해 기다리고 이를 결정해 주는 것이 CPU scheduler라고 하였다. ex ) p1을 서비스했다면 그다음 p2를 서비스해줄 것인가 p3를 서비스 해줄 것인가? (즉 OS 안에 프로세스 관리 영역에 있는 scheduler는 어떤 프로세스에게 CPU 서비스를 받게 해 줄 것인가 결..
-
8. 프로세스 관리운영체제/운영체제 정리 2019. 10. 7. 01:51
프로세스 관리란 (Process Management) ? CPU 자원을 어떻게 각 프로세스 에게 효과적으로 나누어 줄 수 있는가 프로세스란 ? program in execution 즉 실행중인 프로그램, 하드디스크에서 메인메모리로 올라온 프로그램 CPU는 프로세스들을 관리한다. CPU시간을 각 프로세스들에게 나눠주는 일을 한다. 프로세스 상태 -new :처음 하드디스크에서 메모리로 올라 온 상태 -ready :초기화를 끝내고 실행할 준비가 된 상태 -running : 실제로 CPU가 실행하는 프로세스의 상태 -waiting : 프린트를 하고 싶다면? CPU는 더 이상 서비스 하지 않고 다음 프로세스로 넘어가서 그 프로세스를 running 상태를 만 든다. 그럼 기존의 프로세스는 waiting 상태가 된다..