[CS] 컴퓨터 공학 퀴즈_4/6 풀이

Alicia·2022년 11월 28일
0

제로베이스

목록 보기
8/15

1. 쓰레드 동기화 이슈

동기화 이슈를 해결하기 위한 방안으로 Mutual Exclusion 이 있음

Mutual exclusion 상호배제
:임계구역에 하나의 스레드만 들어간다. 여러 스레드가 변경하는 공유 변수에 대해 Exclusive Access를 적용하여 어느 한 스레드가 공유변수를 갱신하는 동안 다른 스레드가 접근하지 못하도록 막는 것.

동일한 자원을 여러 쓰레드가 동시에 읽을시, 동기화 이슈가 발생할 수 있음

Semaphore 를 동기화 이슈를 해결하는데 활용할 수 있음

Semaphore 세마포어
:임계구역에 여러개의 스레드가 들어갈 수 있다.

  • 바쁜 대기
    wait()은 S가 0이라면, 임계영역에 들어가기 위해, 반복문 수행
    바쁜대기, busy waiting -> 멈춤이 없다. -> CPU에 부하를 걸리게 함
P(s): wait(S) {
		while s <= 0 // 대기
        S--; // 다른 프로세스 접근 제한 (1감소)
        }
  • 대기 큐
    S가 음수일 경우, 바쁜 대기 대신, 대기큐에 넣는다.
wait(S) {
    	S->count--;
    if (S->count <= 0) {
    	add this process to S->queue; // 대기 
        block() // 블록, sleap()
    }
}

wakeup() 함수를 통해 대기큐에 있는 프로세스 재실행

signal(s) {
		S->count++;
    if (S->count >=1) {
        remove a process P form S->queue;
        wakeup(P) // 깨우기
    }
}

2. 교착상태와 기아상태

교착상태 - 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태

교착상태의 발생 조건 - 모두 성립해야 발생

  • 상호 배제 : 하나의 프로세스가 자원을 사용중일 때 다른 프로세스는 그를 사용할 수 없다.

  • 점유 대기 : 최소 하나의 자원을 점유하고 있으면서 다른 프로세스가 사용중인 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재한다.

  • 비선점 : 다른 프로세스가 자원을 사용중인 경우 그 사용이 끝날 때 까지 강제로 뺏을 수 없다.

  • 순환 대기 : 프로세스의 집합에서 순환형태로 자원을 대기하고 있어야 한다.



기아상태 : 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태를 말함.

교착 상태와의 차이
교착상태는 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태를 말하고 기아 상태는 프로세스가 원하는 자원을 계속 할당 받지 못하는 상태이다. 즉 교착 상태는 여러 프로세스가 동일한 자원 점유를 원할 때 발생하고 기아 상태는 여러 프로세스가 자원을 점유하기 위해 경쟁 할 때 특정 프로세스는 영원히 자원 할당을 받지 못하는 것이다.



3. 가상 메모리

메모리가 물리 메모리보다 많아 보이게하는 기술로, 프로세스가 여러개라도 실제 특정 시점에 사용하는 메모리는 작다는 점에 착안한 것이다.

4. MMU

: CPU에 코드 실행시, 가상 주소 메모리 접근이 필요할 때, 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치이다.



5. 페이징 시스템

: 물리 메모리에 크기가 동일한 사이즈로 페이지 단위를 만들어 올리는 방법이다. 리눅스 운영체제에서는 4KB 단위로 페이징을 한다. 이 의미는 물리 메모리인 0~4GB를 4KB 단위로 모두 주소를 쪼개서 페이지라고 하고 번호를 붙인다는 말이다. 페이지 번호를 기반으로 가상 주소와 물리 주소가 매핑되어 사용된다.

6. 페이징 시스템의 각 단계(1단계~4단계)

1단계: 해당 프로세스에서 특정 가상 주소 접근을 시도한다.

2단계: 해당 프로세스의 데이터 영역에서 Page 번호를 확인한다.

3단계: 해당 Page 가 물리 메모리에 있으면, 해당 페이지의 첫부분을 가리키는 물리 주소를 Page Table에서 알아낸다.

4단계: 해당 페이지의 첫부분을 가리키는 물리 주소에 변위값을 더해서, 가상 주소에 해당하는 물리 주소를 접근한다.


5-1 다중 단계 페이징 시스템

페이지 정보를 단계를 나워서 생성한다. 필요없는 페이지는 생성하지 않기 때문에 공간 절약이 가능하다.

페이지 번호를 나타내는 bit를 구분해서 단계를 나눕니다. (리눅스의 경우 3간계로 나뉘어지는데 최근에는 4단계로 나뉘어지기도 합니다.)



7. 프로세스 구동시, 해당 페이지 테이블의 base 주소가 저장되는 레지스터

: CR3 - 선형 주소를 실제 물리적 주소로 바꾸기 위한 첫번째 작업은 페이지 디렉토리를 찾는 것이며 이 페이지 디렉토리의 위치 정보는 CR3( Control Register 3 )레지스터의 11비트에서 31비트 사이의 20비트를 통하여 얻게된다.

windows에서 프로세스의 스위칭이 일어 날 때마다 CR3 레지스터의 페이지 디렉토리 PFN을 바꾸어 줌으로써 해당 프로세스가 사용하는 가상 메모리를 전혀 다른 물리적 주소와 매핑시킬수 있게 한다.



8. 요구페이징

  • 프로세스 모든 데이터를 메모리로 적재하지 않고, 실행 중 필요한 시점에서만 메모리로 적재하는 기법.
  • 프로세스의 이미지를 backing store에 저장한다. backing store는 swap device로 하드웨어 부분인데 페이지를 임시로 보관하는 공간이다


9. 페이지 폴트에 대한 설명으로 가장 알맞은 것은?

: 향후에 프로세스가 접근할 페이지들은 미리 물리 메모리에 넣어놓는다면, 페이지 폴트를 줄일 수 있음



10. 스레싱

여러 프로그램을 한 번에 실행하면 하드디스크와의 입출력이 계속되어 프로그램이 정지한 것 같은 현상이 발생할 수 있다.
메모리가 꽉 찬 이후 새로운 프로그램을 올리기 위해 기존 프로그램을 스왑 영역에 옮기는 횟수가 증가하기 때문이다.

11. 세그멘테이션 기법

: 서로 크기가 다른 논리적 단위인 세그먼트로 분할하여 가상 메모리를 관리하는 기법



12. CPU 코드 실행 중 메모리 접근시, 가상 주소와 물리 주소를 변환해주는 하드웨어 장치 이름은?

: MMU



13. Associative Memory (연관 기억장치, 결합기억 장치, Content Addressable Memory)


: 일반적으로 대부분의 기억 장치에서는 정보가 저장되어 있는 주소를 입력하여, 입력된 주소에 저장되어 있는 기억 장치의 내용을 접근하게 된다. 하지만 연관 기억 장치에서는 주소를 사용하는 것이 아니라, 접근하려고 하는 자료의 내용을 사용하여 이러한 자료가 저장되어 있는 기억 장치를 접근할 수 있다. 일반적으로 기억 장치의 접근 속도를 빠르게 하기 위하여 사용되는 캐시 기억 장치에서 이러한 연관 기억 장치가 사용되는 데, 캐시 기억 장치를 구성하는 각각의 셀들을 병렬로 동시에 접근할 수 있다. 따라서 원하는 자료를 입력하여 캐시 기억 장치를 구성하는 각각의 셀의 내용과 입력된 자료를 비교하여 동일한 내용을 가지고 있는 셀을 선택하여 접근할 수 있다. 이러한 컴퓨터는 비 폰노이만 구조라고 한다.
- 전체 워드 또는 워드의 일부 만으로 탐색할 수 있다. 워드의 일부 영역을 선택하기 위한 Mask를 사용한다.

14. 인터럽트를 사용한 I/O에 관한 설명으로 옳은 것은?

: I/O 장치는 데이터 전송을 위해 인터럽트를 사용하여 전송 준비 상태를 CPU에 알린다.



15. Cache Coherence

  • 각 프로세서에 개별 Cache를 허용하지 않으면 Cache Coherence를 해결 할 수 있다.
  • 읽기 전용 데이터만 캐시가 가능하도록 설정하면 Cache Coherence 문제를 해결 할 수 있다.
  • Snoopy Cache Controller는 버스를 감시하여 Cache를 제어한다.


16. 인터럽트 번호와 각각의 실행 코드를 가리키는 주소를 가진 데이터가 기록되어 있는 곳은?

: IDT(Interrupt Descriptor Table)
컴퓨터 부팅 시 운영체제가 IDT에 인터럽트들을 기록하고,

인터럽트가 발생하면 IDT를 확인하여 Interrupt 번호에 해당하는 함수를 호출해서 인터럽트를 처리하게 됩니다.

0개의 댓글