brunch

You can make anything
by writing

C.S.Lewis

by 이종복 Sep 10. 2020

운영체제 메모


1. 프로세스가 CPU자원의 할당을 받는다는 것이 무엇인가?


2. 할당되는 메모리 안에는 힙, 스택, 코드, 데이터 영역이 포함된다는 것이 무엇인가?

-> 하나의 프로세스는 메모리에 할당되는데, 하나의 프로세스는 코드, 지역 변수, 매개 변수, 전역 변수, 동적으로 선언되는 변수 등으로 구성된다. 그리고 메모리에서는 

   코드 - 코드, 데이터 - 전역 변수, 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이 줄어서 프로그램이 빨라진다는 것인데 왜 그러한가?




작가의 이전글 데이터베이스 메모
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari