paging, segmentation을 사용해서 real memory를 나누고 있다
페이지 - 고정된 사이즈의 메모리 블럭, 세컨더리 메모리에서 한번 읽어내는 data 사이즈와 같은 크기가 된다
세그멘테이션 - 고정된 크기의 블럭이 아닌 필요한 만큼의 variable length block으로 메모리 할당



해결해야 할 문제
relocation - 프로세스가 어디에 들어가던지 사용자는 항상 0번지에서 프로그램이 실행되는 것처럼 프로그래밍 할 수 있어야 한다, 주소 전체가 바뀌어야 함
protection - 하나의 프로그램이 다른 프로그램 내용에 접근할 수 없어야
sharing - 프로세스가 여러개 있을때 자원을 공유할수 있어야, 스레드의 텍스트 영역은 read only로 공유
할당된 메모리가 논리적으로 관리
나누어진 메모리가 물리적으로 관리


프로그래머는 이 프로그램이 0번지부터 들어간다고 가정하고 프로그래밍
실행되는 프로세스는 swap out 되었다가 in 되는 과정을 계속하는데 그럴때마다 다른 물리적인 메모리에 할당될수 있다. 그 상황에서도 relocation 필요


주소값을 바꿔줄 필요가 있다.
언제 바꿔주나
1. 컴파일러가 주소를 바꿔줌
2. realtive address - 시작이 어디든 상대적 주소로 relocation
1 클럭 안에 어떻게 해결?


프로세스는 메모리 접근 위해 permission관리 필요
보안이 뚫리는걸 방지 위해 모든 메모리 reference는 실행시간에 확인되어야 한다
이것은 sw로 불가, hw로 protection 한다


각 프로세스는 프로그램의 많은 부분을 공유할수 있다. 메모리를 공유하는것이 필요
protection 하면서 잘 공유할수 있도록, HW을 사용하여 해결



프로그램은 여러 모듈로 구성된다
각각이 컴파일되어 로딩되어 실행
프로그램은 text, data, heap(bss), stack 으로 이루어진다
이 segment 논리적 구조를 관리할수 있어야 한다


이런 메모리는 물리적인 기억장소와 주소값을 갖기때문에 
메모리라는 커다란 덩어리를 관리하면서 프로세스에 나눠줘야

세컨더리 메모리까지 사용하여 확장하여 process 실행할수 있게 만듦 



#
이런 요구사항을 가지고 사람들이 real memory를 나누는 방법을 생각한것
partitioning
프로세스를 만들기 위해서는 메인메모리를 여러 프로세스에게 잘라서 나누어줘야 하고
메모리를 겹치지 않는 영역으로 나누어서 나눠주는것 


고정크기 - 비효율적일것
필요한 크기에 맞춰서 나눠주는 방법 - 재사용이 어렵다 fragmentation


고정크기 


단점  - 얼마만큼의 크기로 나눠야 할까, 프로세스중 가장 큰 크기로 할당할수밖에 없다.
비효율적이며 남는공간이 생긴다 - internal fragmentation



unequal size partitions
크기에 맞는 프로세스를 줄세우고 할당
그래도 internal fragmentation이 생긴다

small job는 partition 대부분을 낭비하는 문제 발생


dynamic partitioning
variable length 메모리 블럭을 할당
동적으로 실행시간에 필요한만큼 나누어줌


자투리들이 생기게 된다
external fragmentation(파편화)


shift를 해서 비어있는 메모리를 몰아서 메모리를 사용하게 할수 있다 compaction
메모리는 cpu보다 느린 디바이스이므로 시간을 낭비하게 된다



#
어떻게 메모리를 나누어줄 것인가
best-fit - 요구되는 메모리블럭에 가장 근접한 메모리를 할당, internal fragmention 최소화
first-fit - 위에서부터 첫 가능한 공간에 할당, 자투리가 몰림 시스템 성능저하
next-fit - 마지막 할당한 메모리공간 다음것을 찾아서 할당(next available block할당)







#
buddy system
앞의 시스템보다 fragmentation이 적게 남는 시스템
고정된 사이즈와 동적 사이즈 partitioning을 섞은것
compaction이 필요없이 메모리를 잘 할당할수 있도록 만들어짐
메모리 블럭을 2의 지수승으로 잘라서 사용 



binary tree를 활용해서 메모리 공간을 관리할수 있게 된다


이렇게 real memory를 여러 방법으로 나눌때
logical memory를 physical memory로 바꿀 방법 필요

해결방법 - 몇번지부터 시작하건간에 상대적으로 주소를 표현 (relative addressing)


프로그램을 하드웨어에서 relocation하기 위해서는 base register와 offset 사용
100번지에서 시작한다면 100번지를 base register에 넣고
relative address가 5번지라면 
adder가 더해서 105번지
bound register가 경계값을 가지고 있다가 경계를 넘어가면 interrupt 발생시켜서 종료
경계보다 작거나 같다면 data에 access하도록 

물리적인 메모리 segment나 고정된 사이즈의 memory partition을 나눠줄때 이런 방법으로 relocation문제와 protection문제 해결
(중요)



#
페이징 - 많은 부담을 하드웨어가 처리하는대신 사용자가 편리하게 쓸수 있는 방법
페이징은 고정된 크기 덩어리로 작게 나눠서 이 단위로 메모리를 할당


위처럼 흩어져서 프로그램이 들어가는 경우...

페이지 테이블 - 각 프로세스마다 운영체제에 의해 유지가 되는 테이블로 해결
물리적인 페이지 - 페이지 frame 
frame의 위치를 각 프로세스에 대해 저장
물리적인 주소를 생성(relocation)을 위해 이 테이블을 사용 

랜덤하게 들어가는것을 맵핑하기 위해서 - page table



인덱스 값으로 페이지 번호 유지
process page table은 sw가 프로세스 생성할때마다 만든다
테이블 써서 맵핑 - 한 클럭 안에
캐시를 사용하여 한클럭 안에(확률로 p값으로)



#
프로그램은 세그먼트 단위로 나눌수 있다
여러 사이즈의 메모리 블럭
세그먼트 넘버(세그먼트 시작점)와 offset로 나눌 수 있음

dynamic partitioning과 유사
필요한만큼 할당했기 때문에 internal fragmentation을 없앰


관리하기 위해서 페이징과 비슷한 주소변환을 사용
페이지 대신 세그먼트 넘버를 인덱스 값으로 사용
그것에 base 주소와 길이정보가 들어있다

base주소와 offset값을 붙이는게 아니라 더해서 물리적 주소를 만든다
이 과정도 한클럭 안에서 만들어진다
OS는 프로세스의 segmentation 테이블을 유지한다


#
Segmentation과 Paging은 메모리 관리를 위한 두 가지 주요 기술입니다. 각각의 방식은 논리 주소와 물리 주소 간의 변환을 다르게 다룹니다.

## Segmentation (세그멘테이션):
논리 주소 공간은 서로 다른 크기의 세그먼트(segment)로 나누어집니다. 예를 들어, 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트 등이 있을 수 있습니다.
논리 주소는 세그먼트 번호(segment number)와 오프셋(offset)으로 구성됩니다.
세그먼트 테이블(segment table)에는 각 세그먼트의 물리 주소 범위가 저장되어 있습니다.
변환 과정은 논리 주소의 세그먼트 번호를 사용하여 세그먼트 테이블에서 해당 세그먼트의 물리 주소 범위를 찾은 다음, 오프셋을 더해 물리 주소를 얻어냅니다.

## Paging (페이징):
논리 주소 공간과 물리 주소 공간은 페이지(page)로 나누어집니다. 페이지는 고정된 크기로 분할됩니다.
논리 주소는 페이지 번호(page number)와 페이지 오프셋(page offset)으로 구성됩니다.
페이지 테이블(page table)에는 각 페이지의 물리 주소가 저장되어 있습니다.
변환 과정은 논리 주소의 페이지 번호를 사용하여 페이지 테이블에서 해당 페이지의 물리 주소를 찾은 다음, 페이지 오프셋을 더해 물리 주소를 얻어냅니다.
따라서 Segmentation은 세그먼트 단위로 주소 공간을 관리하고, Paging은 페이지 단위로 주소 공간을 관리합니다. Segmentation은 세그먼트의 크기가 가변적이고, Paging은 페이지의 크기가 고정적입니다. 또한 Segmentation은 세그먼트 단위의 공유와 보호를 제공하는 데에도 활용될 수 있습니다.



#


한 사용자의 프로그램을 다른 사용자가 가로챌수 있다면 문제




컴파일 타임이나 run time에 체크헤서 막는 방법이 있다 


#





<자료 0>
사용자 수준 스레드의 장점은?

세마포어 구현 코드 빈칸 작성하기

컴퓨터의 기본요소 4개
커널모드 체인지 필요없는 스레드 방식 (ULT)
프로세스
스레드
ABI

운영체제
교착상태
세마포어 3개 연산자

식사 철학자 문제에서, 오른쪽 포크 먼저 점유 - 왼쪽 포크 wait - 사용 가능하면 식사 시작/ 아니면 오른쪽 포크 내려놓기 - 반복
위 프로토콜로 교착상태 방지 가능한가?
- 불가능
이유는?
- 모든 프로세스가 오른쪽 포크를 먼저 점유하고 왼쪽 포크를 대기하는 상황이 있을수 있다. 모든 프로세스가 오른쪽 포크를 가진채로 무한정 대기하게 되어 교착상태가 발생
왼쪽 포크 실패시 임의시간 대기후 재시도한다면, 해결되는 문제는?
- 한 프로세스가 왼쪽 포크를 영원히 기다리는것을 방지해서 교착상태 방지 가능. 


세마포어 producer/customer 코드 빈칸 채우기
producer에서
item 초기화 아래/ SemWait 위 작은 빈칸
pushBuffer(item) 아래 큰 빈칸
customer에서
SemWait 위 작은 빈칸
item = removeBuffer() 아래 큰 빈칸


7장 : 논리 - 물리주소 변환과정은?
세그먼트나 페이지 번호 추출, 세그먼트나 페이지 테이블 조회, 오프셋 추출, 페이지 번호와 오프셋 이용 물리주소 계산


단일 프로세서
관련내용



<자료 1>

1. 단일 프로세서 시스템에서 다중 프로그래밍은 다음을 통해 프로세서 효율성을 높입
니다
모든 유휴 프로세서 사이클 제거 
긴 대기 인터럽트 처리로 낭비되는 시간 활용 (0)
우선 순위가 가장 높은 인터럽트를 제외한 모든 인터럽트 비활성화 
프로세서 속도 향상


 2. __________는 OS가 독립적 인 프로세스가 데이터와 명령 모두 서로의 메모리에
접근하지 않도록 해야하는 곳입니다
  보호 및 출입 통제 
  프로세스 격리 (0)
  자동 할당 및 관리 
  모듈형 프로그래밍 지원 



3. 한 프로세스가 공유 리소스에 액세스하는 중요한 섹션에 있을 때 다른 프로세스가 이
러한 공유 리소스에 액세스하는 중요한 섹션에 있을 수 없다는 요구 사항은
_________입니다
  원자 연산 
  라이브 록 
  상호 배제 (0) 
  중요 섹션


4. __________는 프로세스에서 사용할 수 있는 메모리 주소 범위입니다
  가상 주소 
  실제 주소 
  주소 공간 (0)


5. _________를 사용하면 여러 스레드가 잠금으로 보호되는 객체에 동시에 읽기 전용
액세스 권한을 가질 수 있습니다
  리더/라이터 잠금 장치 (0)
  장벽 
  뮤텍스 
  조건 변수

6. 다중 스레드 환경에서 __________는 자원 할당 단위와 보호 단위로 정의됩니다
  문자열 
  프로세스 (0)
  쓰레드 
  모니터

7. 준비 열에 대기하는 각 프로세스에 차례로 일정한 시간을 부여하는 일반적인 전략을
__________ 기술이라고 합니다
  시간 슬라이싱 
  라운드 로빈 (0)
  멀티스레딩 
  직렬 처리

8. 집합의 각 프로세스가 다른 차단된 프로세스에 의해서만 트리거될 수 있는 이벤트를
기다리는 동안 실행이 차단되는 프로세스 집합은 _________ 상태 입니다
  중단된 
  교착 (0)
  선점 
  스핀락

9. 메모리 관리의 동적 파티셔닝 기술에서 마지막 배치의 위치에서 메모리를 스캔하고
요청을 충족 할만큼 충분히 큰 다음 사용 가능한 블록을 선택하는 배치 알고리즘을
__________ 이라고합니다
  Best fit
  First fit
  Last fit
  Next fit (0)

10.  _________는 대체 할 페이지를 선택할 때 페이지 오류를 생성 한 프로세스의 상주
페이지 중에서만 선택 합니다
  글로벌 교체 정책 
  지역 교체 정책 (0)
  페이지 교체 정책 
  페이지 배치 정책


11. 프로세스가 _________ 상태에 있을 때 보조 메모리에 있지만 주 메모리에 로드되는
즉시 실행할 수 있습니다
  차단됨/일시 중단 
  막힌 (block) 
  준비일시 중단(0) 
  준비


12. 실행 가능한 프로세스가 무기한으로 기다리도록 간과되는 상황을 __________ 라고
합니다
 기아 상태 (0)
  교착 상태 
  상호 배제 
  라이브 록 

13. 각 프로세스의 페이지 테이블은 _________ 을 유지합니다
  프로세스의 각 페이지에 대한 프레임 위치 (0)
  프로세스의 실제 메모리 위치 
  프로세스의 논리적 메모리 위치 
  프로세스의 각 프레임에 대한 페이지 위치 

14. _________는 세마포어와 동등한 기능을 제공하고 제어하기 쉬운 프로그래밍 언어
구조입니다
  모니터 (0)
  원자 연산 
  코루틴 
  중요 섹션


15. 교착 상태 _________의 전략은 교착 상태의 가능성이 배제되는 방식으로 시스템을
설계하는 것입니다
  예방(0) 
  탐지 
  무시 
  회피

16.  _________ 은 공유 리소스에 대한 액세스가 필요하며 다른 프로세스가 해당 코드 섹
션에있는 동안 실행해서는 안되는 프로세스 내의 코드 섹션입니다
critical section


17. 각각 다른 프로세스 중 다른 프로세스가 무언가를 하기를 기다리고 있기 때문에 두 개
이상의 프로세스가 진행될 수없는 상황은 __________입니다
deadlock

18. _________는 시스템 자원을 위해 경쟁하거나 서로 통신하는 일련의 프로세스들이
영구적으로 정지하는 것으로 정의 할 수 있습니다
deadlock

19. 교착 상태가 가능하려면 세 가지 정책 조건이 존재해야합니다 : 상호 배제 선점 없음
_________ .
hold and wait

20. __________는 프로세스가 고정 크기 버퍼의 한계를 넘어 데이터를 저장하려고 시
도하여 인접한 메모리 위치를 덮어 쓸 때 프로그래밍 오류의 결과로 발생할 수 있습
니다
버퍼 오버플로우

21. 컴퓨터 시스템에서 _________는 바이트 또는 단어의 시퀀스로 구성된 선형 또는 일
차원 주소 공간을 구성합니다
main memory

22. _________는 프로세스가 고정 크기 버퍼의 한계를 넘어 데이터를 저장하려고 시
도하여 인접한 메모리 위치를 덮어 쓸 때 프로그래밍 오류의 결과로 발생할 수 있습
니다
버퍼 오버플로우


23. 스레드의 주요 상태는 실행 중 _________ 및 차단됨입니다
준비


24.모든 자원 할당 및 스케줄링 정책은 공정성 차등 응답성 및 __________의 세 가지
요소를 고려해야합니다
효율성

25. 시스템 액세스 위협은 __________와 악성 소프트웨어의 두 가지 일반적인 범주로
나뉩니다
intruders

26. 프로세스 블록 정보는 프로세스 식별자 __________ 및 프로세스 제어 정보의 세 가
지 일반적인 범주로 그룹화 할 수 있습니다
processor state information

27. _________는 시스템 자원을 위해 경쟁하거나 서로 통신하는 일련의 프로세스들이
영구적으로 정지하는 것으로 정의 할 수 있습니다
deadlock

28.자원 할당 거부 전략을 ___________ 이라고합니다
banker's algorithm

29. 주 기억장치를 할당하는 방법인 고정 파티셔닝과 동적 파티셔닝의 단점을 극복하기
위한 타협적인 방법은 __________ 입니다 
buddy system

30.  __________에 대한 중요한 점은 실행중인 프로세스를 중단하고 중단이 발생하지
않은 것처럼 나중에 실행을 다시 시작할 수 있도록 충분한 정보가 포함되어 있다는 것
입니다
process control block



<자료 2>

ex) 다음중 하드웨어와 소프트웨어를 이어주는 인터페이스는? 
1) ISA 2) IAS 3) KLT 4) KMS
 ex) OS를 구성하는 기본 4가지 요소는 __이다
1) I/O 장치, 시스템버스, CPU, 메인메모리
2) I/O 장치, 시스템버스, 보조메모리, CPU
 3) 시스템 버스, CPU, 커널, I/O장치
4) 커널, I/O장치, 커널, 메인메모리

ex) 프로그램의 실행 상태와 대응되는 것은 _이다
1) 프로세스 2) 커널 3) 프로그램 4) 스레드

ex) 디바이스 제어장치가 인터럽트를 발행하면, 프로세서는 인터럽트에 대한 ____신호를 보낸다.
응답?


Mutex를 이용해 소비자와 생산자 문제를 해결하려고 한다. 
semaphore fill, empty, mutex
 processor producer(){
 semWait(mutex);
 semWait(fill);
 consume();
 semSignal(mutex);
 semSignal(fill);
 semWait(empty);
}

 processor consumer(){
 semSignal(empty);
 semWait(mutex);
 semWait(fill);
 consume();
 semSignal(mutex);
 semSignal(fill);
 }

 a) 데드락이 발생합니까?
 - 네
 b) 그 이유는 무엇입니까?
 - 생산자와 소비자가 서로 대기하는 상황이 발생할 수 있다. 생산자가 세마포어 fill을 기다리고 있고, 동시에 소비자가 세마포어 empty를 기다리는 경우 데드락이 발생할 수 있다.
 c) 해결하세요(소스코드를 고치고 동그라미를 치세요) 그리고 그 이유는 무엇입니까?



<자료 3>

1. 는 프로세스를 관리하기 위해 __________ 테이블을 유지 관리해야 합니다
  기억 
  IO 
  프로세스 (0)
  파일

2. __________ 은 페이지 테이블 항목을 가상 페이지 번호가 아닌 프레임 번호별로 인덱싱합니다
  해시 테이블 
  세그먼트 테이블 
  반전된 페이지 테이블 (0)
  페이지 테이블

<??>
반전된 페이지 테이블은 페이지 테이블 항목을 프레임 번호별로 인덱싱합니다. 이는 페이지 테이블이 가상 주소 공간의 페이지 번호를 기준으로 페이지 테이블 항목을 저장하는 것과는 다릅니다. 대신, 반전된 페이지 테이블에서는 각 프레임에 대한 페이지 테이블 항목을 저장합니다. 이 방식은 주어진 물리적 프레임에 어떤 가상 페이지가 매핑되어 있는지를 빠르게 찾을 수 있도록 해주며, 이는 페이지 교체 알고리즘 등에서 필요한 정보를 빠르게 찾을 수 있게 해줍니다.
일반적인 페이지 테이블은 가상 페이지 번호를 기준으로 페이지 테이블 항목을 인덱싱합니다. 가상 주소 공간의 페이지 번호를 기반으로 해당 페이지의 물리적인 위치를 찾는 데 사용됩니다. 페이지 테이블의 각 항목은 가상 페이지 번호와 그에 대응하는 물리적인 프레임 번호를 매핑합니다. 이 방식은 가상 메모리를 효과적으로 관리하고, 페이지 교체와 주소 변환을 위한 필수적인 정보를 제공합니다.
페이지 번호에 대해 이야기하고 있으니 세그먼트 테이블은 아니고, 해시 테이블은 데이터 구조 내용


3. 한 프로세스가 공유 리소스에 액세스하는 중요한 섹션에 있을 때 다른 프로세스가 이러한 공유 리소스에 액세스하는 중요한 섹션에 있을 수 없다는 요구 사항은 _________입니다
  상호 배제(0) 
  라이브 록 
  원자 연산 
  중요 섹션

4.__________를 사용하면 프로세스가 모든 세그먼트를 연속적일 필요가 없는 동적 파티션으로 로드합니다
  가상 기억장치 세그먼테이션 (x)
  간단한 페이징 (0)
  가상 기억장치 페이징 
  간단한 세그먼테이션
<??>
정답은 "간단한 페이징"입니다. 간단한 페이징 방식에서는 프로세스가 모든 세그먼트를 연속적일 필요가 없는 동적 파티션으로 로드됩니다. 페이징은 가상 메모리를 고정된 크기의 페이지로 나누고, 이 페이지들을 물리 메모리에 할당하는 방식입니다. 이로 인해 프로세스의 세그먼트가 연속적이지 않아도 되며, 동적 파티션으로 프로세스를 로드할 수 있습니다.


5.프로세스는 주 메모리에 있고 이벤트를 기다리는 동안 _________ 상태에 있습니다
  차단됨일시 중단 
  준비일시 중단 
  막힌 block (0)
  준비된

6.  ___________ 루틴은 인터럽트의 특성을 결정하고 필요한 모든 작업을 수행합니다
  명령 신호 
  프로그램 처리기 
  인터럽트 처리기 (0)
  인터럽트 신호

7.  _________는 세마포어와 동등한 기능을 제공하고 제어하기 쉬운 프로그래밍 언어 구조입니다
  모니터 (0)
  중요 섹션 
  원자 연산 
  코루틴

8. 프로세스가 _________ 상태에 있을 때 보조 메모리에 있지만 주 메모리에 로드되는 즉시 실행할 수 있습니다
  준비/일시 중단 (0)
  막힌 (block) 
  준비 
  차단됨일시 중단

9. 각 프로세스의 페이지 테이블은 _________ 을 유지합니다
  프로세스의 각 프레임에 대한 페이지 위치 
  프로세스의 각 페이지에 대한 프레임 위치 (0)
  프로세스의 실제 메모리 위치 
  프로세스의 논리적 메모리 위치


10. __________은는 프로그래머에게 보이지 않으며 외부 조각화를 제거하여 주 메모리를 효율적으로 사용합니다
  페이징 (0)
  스래싱 
  세그먼테이션 
  해시 (x)

<??>
  1. 외부 조각화(External Fragmentation):

    • 외부 조각화는 메모리에서 연속적인 작은 조각들이 사용하지 못하고 남는 현상입니다.
    • 주로 고정 크기의 메모리 할당 방식에서 발생합니다. 예를 들어, 메모리 파티션을 고정 크기로 나누고 프로세스에 할당할 때, 메모리 파티션 간에 사용되지 않는 작은 공간들이 발생할 수 있습니다.
    • 외부 조각화는 할당 가능한 메모리가 충분한데도 프로세스를 실행할 수 없는 상황을 만들 수 있습니다.
  2. 내부 조각화(Internal Fragmentation):

    • 내부 조각화는 메모리 내에서 프로세스가 할당받은 메모리 공간보다 더 큰 공간을 사용하지 못하고 남는 현상입니다.
    • 주로 가변 크기의 메모리 할당 방식에서 발생합니다. 예를 들어, 프로세스가 요구한 메모리 크기보다 큰 블록이 할당되고, 이 블록 내에는 프로세스가 실제로 사용하지 않는 메모리가 존재하는 경우에 발생합니다.
    • 내부 조각화는 메모리 공간이 낭비되지만, 외부 조각화보다는 덜 심각한 문제입니다.

요약하자면, 외부 조각화는 메모리 공간이 분산되어 사용되지 못하는 현상을 나타내고, 내부 조각화는 할당된 메모리 공간 내에서의 낭비를 나타냅니다.



11. _________는 프로세스 간 시그널링에 사용되는 정수 값입니다
  중요 섹션 
  뮤텍스 
  세마포어 (0) - 정답 확실하지 않으나 맞을
  원자 연산 (x)


12. __________ 조건은 자원 유형의 선형 순서를 정의하여 방지 할 수 있습니다
  상호 배제 
  원형 대기 (0)
  선점 없음 
  잡고 대기

13. __________는 프로세스에서 사용할 수 있는 메모리 주소 범위입니다
  가상 주소 (x)
  주소 공간 
  실제 주소

 14. _________ 는 교체 시 수정된 프로세스 페이지를 작성하거나 프리클리닝 정책을 사용할 수 있는 곳으로 한 번에 여러 페이지를 작성하여 출력 활동을 클러스터링합니다
  배치 정책 
  부하 제어 
  청소 정책 (0)
  교체 정책


15. __________에는 가져올 다음 명령의 주소가 있습니다
  누적기AC 
  명령 레지스터 IR 
  프로그램 카운터 PC (0)
  명령어 카운터IC 


16. 스레드 구현 방법에는 사용자 수준 스레드ULT와 ________의 두 가지가 있습니다
KLT


17. 페이지 대치 방법 중에 __________ 정책은 프로세스에 할당된 페이지 프레임을 순환 버퍼로 처리하고 페이지는 라운드 로빈 스타일로 제거됩니다
fifo

18.공격으로부터 시스템을 방어하기위한 대책은 컴파일 타임 방어와 _________의 두 가지 범주로 분류 할 수 있습니다
런타임 방어

19.  _________ 는 보조 메모리가 주 메모리의 일부인 것처럼 주소 지정 될 수 있는 기억장치 할당 체계입니다
가상 메모리

20. 메인 메모리의 각 위치에는 명령어 또는 데이터로 해석될 수 있는 _________ 값이 포함되어 있습니다



21. __________를 사용하면 해당 페이지의 위치에 대한 참조가 이루어질 때만 페이지가 기본 메모리로 가져옵니다
demand paging

22. 교착상태_________ 전략은 매우 보수적이며 자원에 대한 액세스를 제한하고 프로세스에 제한을 가함으로써 교착 상태 문제를 해결합니다
prevention

23.  _________ 은 공유 리소스에 대한 액세스가 필요하며 다른 프로세스가 해당 코드 섹션에있는 동안 실행해서는 안되는 프로세스 내의 코드 섹션입니다
critical section

24.  __________는 응용 프로그램 실행을 제어하고 응용 프로그램과 컴퓨터 하드웨어 간의 인터페이스 역할을하는 프로그램입니다
operating system


25. 스레드의 주요 상태는 실행 중 _________ 및 차단됨입니다
ready


26. 초기 직렬 처리 시스템의 두 가지 주요 문제점은 스케줄링과 __________ 입니다
대기시간(?)

27. 가상 기억장치의 크기는 컴퓨터 시스템의 주소 지정 체계와 사용 가능한 __________의 양에 의해 제한됩니다
물리 메모리(?)

28.  __________는 프로세스의 각 페이지에 대한 프레임 위치를 보여줍니다
페이지 테이블

29. 여러 스레드 또는 프로세스가 공유 데이터 항목을 읽고 쓰고 최종 결과가 실행의 상대적 타이밍에 의존하는 상황은 __________입니다
race condition

30.  __________ 정책은 가장 오랫동안 참조되지 않은 메모리의 페이지를 대체합니다
least recently used





중간고사 시험내용중 기억나는것
locality 그래프에 있던 공식(퀴즈문제 그대로- 뒷반(내가 듣는반) 퀴즈 두문제 그대로 나왔다)
객관식 주관식 나머지는거의 비슷 절반이상 과거문제 그대로

단답형에 task_struct()

서술형
프로세스 상태 그림중 3개 채우기, 레디queue blocked queue 나오는 부분 그림
folk()함수 콜로 프로세스 생성과정 6개 순서대로
세마포어 코드 교착상태 생기는지, 생긴다면 왜?, 그리고 어떻게 고쳐야 하는지