728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 학습을 남깁니다.

  • 들어가며

실제 메모리보다 큰 메모리를 필요로 하는 프로세스를 실행할 수가 없다.

이러한 문제들을 가상 메모리 관리, 특히 페이징을 통해서 말씀드려보도록 하겠습니다.

실행하고자 하는 프로그램을 일부만 메모리에 적재해서 실제 물리 메모리보다 큰 물리 메모리를 실행할 수 있도록 하는 기술

훨씬 큰 메모리를 요구하는 프로세스를 실행하는 기술이 바로 가상 메모리입니다.

대부분의 운영체제가 사용하는 페이징 기법을 알아보도록 하겠습니다.

  • 페이징이란

불연속적으로 메모리를 읽을 수 있는 방법은 무엇이 있을까?

  • 페이지 테이블

페이지 테이블을 통해서 마치 연속적으로 물리 메모리에 저장된 것 처럼 보이게 할 수 있도록 만들 수 있다.

페이지 번호를 통해서 프레임 번호를 순차적으로 실행할 수 있을 것이다.

CPU는 그저 논리 테이블의 번호를 순서대로 실행하면 된다.

  • 내부 단편화

리눅스의 경우 예외적인 페이지로서 일부 페이지들을 기존의 설정된 페이지의 크기보다 더 크게 허용이 될 수 있다.

큰 크기의 페이지를 대형 페이지라고 부른다.

  • PTBR

페이지 테이블이 메모리에 저장되어 있으면, 메모리 접근 시간이 두배가 되는 부작용이 있다.

  • TLB

캐시 메모리를 통해 메모리를 두 번 접근하는 것을 줄일 수 있다.

두번 째 단락은 오타이다. TBL에 없다면 TBL 미스가 발생한다.

  • 페이징에서의 주소 변환

변위: 테이블에서 얼마나 떨어져 있는지

  • 페이지 테이블 엔트리

수정 비트는 스와핑이랑 관련이 있습니다.

CPU가 만일 이 페이지를 읽기만 했다.

 

감사합니다.

참고 url - https://www.youtube.com/watch?v=8ufliWkgqMo&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=41

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 학습한 내용을 남깁니다.

  • 들어가며

문제점과 해결 방법을 알아보겠습니다.

  • 스와핑

  • 메모리 할당

CPU가 메모리를 계속 압축해야 하는 비효율적인 상황이 발생함

이를 해결학 위해 가상 메모리 기법 그리고 페이징 기법이 있습니다.

 

감사합니다.

참고 url - https://www.youtube.com/watch?v=bNFLpMUYqSE&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=40

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 학습한 내용을 남깁니다.

 

  • 들어가며

  • 교착 상태 예방 방법

(현실적으로 불가능)

  • 교착 상태 회피

최대의 자원을 요구할 시를 생각하여 p2 -> p1 -> p3의 안전 순서열을 구해낼 수 있음

빠르게 적게 남은 자원을 수행하고 자원을 빨리 반환 한다면 교착 상태를 피할 수 있다.

만약 P3에게 자원을 내준다면, 자원을 빠르게 반환하는 것이 어려워져 교착 상태를 만날 수 있다.

궁금한 경우 은행원 알고리즘을 참고

  • 교착 상태 검출 후 회복

선점을 통한 회복, 프로세스 강제 종료를 통한 회복이 있다.

선점을 통한 회복은 작업 내역을 많이 잃을 수 있다.

프로세스 강제 종료는 회복 내역이 괜찮다.

  • 가끔씩 발생하는 교착 상태이니 무시하는 방법도 있다.

엔지니어에게는 때로는 적합할 수도 있다. 

 

감사합니다.

참고 url - https://www.youtube.com/watch?v=zQDNXklvdUw&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=39

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 학습한 내용을 남깁니다.

 

  • 들어가며

  • 교착 상태 예방 방법

(현실적으로 불가능)

  • 교착 상태 회피

최대의 자원을 요구할 시를 생각하여 p2 -> p1 -> p3의 안전 순서열을 구해낼 수 있음

빠르게 적게 남은 자원을 수행하고 자원을 빨리 반환 한다면 교착 상태를 피할 수 있다.

만약 P3에게 자원을 내준다면, 자원을 빠르게 반환하는 것이 어려워져 교착 상태를 만날 수 있다.

궁금한 경우 은행원 알고리즘을 참고

  • 교착 상태 검출 후 회복

선점을 통한 회복, 프로세스 강제 종료를 통한 회복이 있다.

선점을 통한 회복은 작업 내역을 많이 잃을 수 있다.

프로세스 강제 종료는 회복 내역이 괜찮다.

  • 가끔씩 발생하는 교착 상태이니 무시하는 방법도 있다.

엔지니어에게는 때로는 적합할 수도 있다. 

 

감사합니다.

참고 url - https://www.youtube.com/watch?v=zQDNXklvdUw&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=39

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 복습한 자료를 남깁니다.

  • 들어가며

 

모든 철학자들이 동시에 식사를 하려면 계속 생각만 하는 지경에 이르게 된다.

어떤 스레드나 프로세스도 실행될 수 없다.

서로가 갖고 있는 자원이 해제될 때 까지 서로 무작정 기다릴 수 밖에 없다.

이러한 상황을 교착 상태라고 한다.

 

감사합니다.

참고 자료 url - https://www.youtube.com/watch?v=Kcv0_Yb8Rqw&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=38

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 학습한 자료를 남깁니다.

  • 들어가며

이 기법들이 어떻게 상호 배제를 이루는지 그리고 어떻게 실행 동기화를 이루는지를 중점적으로 살펴보면 좋을 것 같다.

  • 뮤텍스 락

옷 가게에 가면 탈의실에는 한 번에 한명씩 들어간다.

탈의실이라는 자원을 이용하고 손님들은 프로세스에 비유하고 탈의실을 임계 구역에 비유한다.

탈의실 안에 있는 사람이 있는지 없는지 알 수 없는 경우라면, 문이 잠겨 있다면 사람이 있다고 판단할 수 있는 근거가 된다.

전역 변수로 자물쇠 역할을 하는 락 변수가 있어야 한다.

이에 따라 acquire함수와 release함수가 있을 수 있다.

=> 상호배제를 위한 동기화를 이룰 수 있다.

lock이 false가 될 때까지 쭉 쉴새없이 확인을 해보는 것과 같다.

썩 좋은 방식은 아닙니다.

무한히 반복적으로 대기하면서 임계 구역이 열려 있는지 안 열려 있는지 확인하는지 이를 바쁜 대기라고 부릅니다.

  • 세마포

바이너리 세마포와 카운팅 세마포가 있다.

바이너리 세마포는 이진법으로 뮤텍스 락과 거의 유사하기 때문에 일반적으로 카운팅 세마포를 지칭한다.

프로세스와 스레드들이 STOP인 경우 기다리고, GO이면 임계 구역에 진입한다.

전역 변수 S = 프로세스의 개수 (사용 가능한 공유 자원의 개수)

wait 함수 = 임계구역에 들어가도 되는지 알려주는 함수

signal 함수 = 임계구역 앞에서 기다리는 함수에 '이제 가도 좋다'고 신호를 주는 함수

전역 변수 S가 0이하라면 내가 들어갈 수 있는지를 무한히 반복하고 

false가 되면 사용할 수 있는 프로세스의 개수를 1 낮추고(내가 들어갈 거니까) 임계 구역에 진입한다.

signal() 함수는 전역 변수 s를 1 증가시킨다.

  • 모니터

debuging이 어렵다. 그래서 등장한 것이 모니터다. 개발자가 다루기 편리한 동기화 도구다.

모니터는 실행 순서 동기화도 이룰 수가 있다.

 

감사합니다.

참고 url - https://www.youtube.com/watch?v=4u13f9Umq7Y&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=37

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 학습한 자료를 남깁니다.

  • 01.들어가며

(이 프로세스들이 동시에 실행해도 괜찮을까?)

(스레드 또한 동기화의 대상이기도 하다.)

(프로세스들의 동기화를 고려해야 한다.)

  • 02.동기화의 의미

공동의 목적을 위해서 동시 다발적으로 협력해서 수행되는 프로세스들은 아무렇게나 실행되서는 안 된다.

올바른 수행을 위해 프로세스들을 동기화해주어야 한다.

실행 순서 제어, 상호 배제 이렇게 두 가지 동기화가 있다.

실행의 문맥을 갖는 프로세스 및 스레드는 동기화의 대상이다.

  • 03.실행 순서 제어를 위한 동기화

반드시 writer 프로세스가 실행되어야 reader 프로세스가 같은 작업 파일인 book.txt 파일을 읽을 수 있다.

  • 04.상호 배제를 위한 동기화

프로세스가 교차해서 처리되면 오류가 발생할 수 있다.

잔액이라고 하는 데이터를 동시에 사용을 했기 때문에 오류가 발생한 것이다.

문맥 교환이 일어나더라도 기다려야 한다.

  • 생산자 소비자 예제

모든 프로그램은 동기화를 제공한다.

버퍼 즉 저장 공간에서 데이터를 서로 삽입하거나 뺀다.

총합을 10으로 초기화 해보자.

동시에 접근해서는 안 되는 자원: 총합에 접근했기 때문이다.

이미 진입한 프로세스 외에는 대기를 해야 합니다.

고급언어를 저급언어로 변환하면 한 줄의 코드가 아닙니다. 여러 줄의 코드가 발생합니다.

컴퓨터 내부에서는 한 줄이 아니다.

이 도중에 문맥 교환이 발생을 하면 문제가 발생한다.

반드시 동기화 되어야 한다.

 

감사합니다.

참고 url - https://www.youtube.com/watch?v=0YDjblJn30k&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=36

 

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 학습한 자료입니다.

  • 들어가며

있는 그대로 외우기 보다는 알고리즘의 아이디어(작동방식, 장단점)에 주목하기

  • 0.목차

  • 01.선입 선처리 스케줄링

(먼저 들어온 프로세스를 먼저 처리)

  • 02.최단 작업 우선 스케줄링

(CPU 사용시간이 짧은 프로세스를 먼저 실행, 선점형 또는 비선점형 스케줄링으로 구현될 수 있다. 보통 비선점형 스케줄링으로 사용된다.)

  • 03.라운드 로빈 스케줄링

(선입 선처리 스케줄링에 타임 슬라이스의 기능이 더해진 스케줄링, 즉 정해진 시간 만큼만 돌아가면서 CPU를 할당하는 스케줄링이다. 정해진 시간 이후에는 다시 큐의 맨 뒤에 삽입)

(타임 슬라이스의 크기가 매우 중요해진다. 타임 슬라이스의 크기가 매우 클 경우, 오버헤드가 발생할 가능성이 높아진다.)

  • 04.최소 잔여 시간 우선 스케줄링

  • 05.우선순위 스케줄링

(우선순위가 너무 낮으면 한도 끝도 없이 늦어질 수 있다. 끝끝내 실행이 안 될수도 있다.)

(기아현상을 방지하기 위해 에이징 기법이 있다.)

  • 06.다단계 큐 스케줄링

(우선순위 별로 큐를 정의, 큐별로 스케줄링의 알고리즘을 달리 적용할 수 있음)

(단점은 큐 간의 이동이 불가능하다. 우선순위가 낮은 큐에서 높은 큐로 이동이 불가능하다. 기아 현상이 발생할 수 있다.)

  • 07.다단계 피드백 큐 스케줄링

(다단계 큐 스케줄링의 발전된 형태, 큐 간의 이동이 가능하다.)

(cpu를 많이 이용해야 하면 할 수록 우선순위를 낮게 만드는 알고리즘)

(타임 슬라이스 내에 실행이 완료되지 못하는 프로세스들은 다시 우선순위를 낮게 이동)

(자연스럽게 입출력 집중 프로세스의 우선순위가 높아짐)

(에이징 기법 적용을 통해 우선순위를 점차 높이므로 기아현상을 예방할 수 있다.)

(CPU 스케줄링 기법으로 많이 알려져 있음, 가장 일반적인 형태로 알려져 있음)

 

감사합니다.

참고 url - https://www.youtube.com/watch?v=w1z6WCyMdhQ&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=34

 

728x90
반응형
LIST

+ Recent posts