-> 하나의 프로세스는 메모리에 할당되는데, 하나의 프로세스는 코드, 지역 변수, 매개 변수, 전역 변수, 동적으로 선언되는 변수 등으로 구성된다. 그리고 메모리에서는
코드 - 코드, 데이터 - 전역 변수, static 변수, 스택- 지역 변수, 매개 변수, 힙- 동적으로 선언되는 변수
로 나눠서 처리 한다.
2-1) 프로세스에서 4가지 영역을 구분하는 이유가 무엇인가?
3. CPU시간, 주소 공간, 파일, 메모리 등의 자원이 할당된다는 것이 무엇인가?
3-1) CPU시간이란 무엇인가?
4. 왜 다른 프로세스의 자원에 접근하려면 프로세스간 통신이 필요한가?
-> 프로세스는 메모리에 적재되는데, 일반적으로 각 프로세스는 메모리에서 독립적인 공간을 차지하고, 데이터를 공유하고 있지 않다. 따라서 다른 프로세스의 자원에 접근하려면 프로세스간 통신이 필요하다.
4-1) 프로세스간 통신에는 어떤 것이 있는가?
-> 프로세스간 통신에는 공유 메모리와 메시지 전달이 있다.
4-1-1) 공유 메모리란 무엇인가?
-> 일반적으로 하나의 프로세스는 다른 프로세스의 데이터에 접근이 불가능하다.
공유 메모리란 하나의 프로세스와 다른 프로세스가 같이 접근할 수 있는 메모리 영역을 지정하고,
해당 메모리 영역에 데이터를 적재함으로써 데이터를 주고 받을 수 있도록 하는 기법을 의미한다.
4-1-2) 메시지 전달이란 무엇인가?
5. 왜 스레드마다 스택이 독립적으로 할당되어야 하는가?
-> 멀티 스레딩 환경에서 각각의 스레드는 다른 스레드와 독립적으로 실행된다.
이 의미는 스레드가 자신이 갖고 있는 지역 변수나 매개 변수를 독립적으로 처리해야 함을 의미한다.
따라서 스레드가 자신이 갖고 있는 지역 변수, 매개 변수를 처리하기 위해서는
자신만의 스택이 독립적으로 할당되어야 한다.
6. 왜 스레드마다 PC Register가 독립적으로 할당되어야 하는가?
-> 멀티 스레딩 환경에서 스레드는 CPU를 할당받았다가, 다시 그 CPU를 다른 스레드에게 넘겨준다.
이 때, 한 번 중지되었던 스레드가 다시 실행되려면, 해당 스레드가 어느 지점까지 실행되었었는지
알 필요가 있다. 이 지점을 PC Register가 저장하는 것이다.
6-1) Register란 무엇인가?
7. PCB가 필요한 이유가 무엇인가?
8. LRU 캐싱이란 무엇인가?
-> LRU 캐싱이란 Least Recently Used 캐싱의 줄임말로 페이지 교체 알고리즘이다.
즉, 영어 뜻 그대로 가장 오래 전에 사용된 페이지를 교체해주는 알고리즘이라는 의미이다.
8-1) 페이지란 무엇인가? 페이지 교체 알고리즘이 필요한 이유가 무엇인가?
->
9. 데드락이란 무엇인가?
-> 데드락이란 멀티 프로그래밍 환경에서 CPU와 같은 공통된 자원을 사용할 때 발생할 수 있는 교착 상태를 의미한다.
-> 예를 들어, 프로세스 A가 자원 1을 사용중인 상태에서 자원2를 사용하고자 할 때, 프로세스 B가 자원 2를 사용하고 있어서 대기해야 할 수 있다. 그런데 프로세스 B도 마찬가지로 자원 1의 사용을 필요로 한다면, 이러한 상황을 데드락이라고 할 수 있다.
9-1) 데드락의 4가지 발생 조건과 그것이 의미하는 바는 무엇인가?
10) 왜 각각의 프로세스는 독립된 메모리 공간을 가져야 하는가?
-> 프로세스가 메모리 공간을 가져야만, 메모리 공간에 프로그램의 코드를 적재하여,
CPU가 연산을 수행할 수 있는 상태가 되기 때문이다.
11) Swapping이란 무엇인가?
-> Swapping이란 CPU 할당이 끝난 프로세스를 메모리에서 디스크로 내보내거나, 혹은 디스크에 있는 프로그램을 메모리로 적재하는 것을 의미한다.
-> 이 때, 메모리에서 디스크로 내보내는 것을 Swap-out, 디스크에서 메모리로 적재하는 것을 Swap-in이라고 한다.
12) Fragmentation이란 무엇인가? Fragmentation이 왜 발생하는가?
-> Fragmentation은 프로세스가 메모리에서 Swap-in, Swap-out을 하는 과정에서 메모리 사이에 작은 자유 공간이 생겨나는 것을 의미한다.
12-1) 작은 자유 공간이 왜 발생하는가?
->
13) 가상 메모리란 무엇인가?
-> 프로세스 전체가 메모리에 올라와 있지 않더라도 실행이 가능하게 하는 기법을 의미한다.
13-1) 왜 프로세스 전체가 메모리에 올라와 있지 않더라도 실행이 가능한가?
->
13-2) 가상 메모리의 장점은
1)물리 메모리 크기의 제약을 받지 않는다는 것과
2)Swap이 줄어서 프로그램이 빨라진다는 것인데 왜 그러한가?