ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS - 운영체제 정리
    CS 2023. 11. 2. 02:06

    기본 개념

    운영체제가 무엇인가요?
    하드웨어 자원을 관리하고, 응용프로그램과 하드웨어 사이를 중재하는 인터페이스입니다. 
     
    커널이 무엇인가요? 
    메모리에 상주하는 운영체제의 핵심 부분으로, OS 전체를 메모리에 올려두는 것은 메모리 낭비가 심하므로 핵심 부분인 커널만 메모리에 올려놓고 사용합니다. 
     
    시스템 콜이 무엇이고 왜 존재하는지 설명해주세요.
    OS가 커널에 접근하기 위한 인터페이스로, 유저 프로그램이 OS의 서비스 받기 위해 커널함수를 호출할 때 사용합니다. 
    자원에 대한 직접 접근을 차단함으로써 자원을 보호한 채 사용자에게 서비스를 제공하기 위해 존재합니다. 
     
    인터럽트란 무엇이고 어떤 종류가 있나요 ? 
    CPU가 프로그램을 실행하고 있을 때 하드웨어 장치 이벤트나 예외 상항등이 발생했을 때 마이크로 프로세서에게 알려 처리할 수 있도록 합니다. 

    • 하드웨어 인터럽트
      • CPU가 아닌 다른 하드웨어 장치가 CPU에게 어떤 사실을 알려주거나 CPU 서비스를 요청해야 하는 경우 발생
    • 소프트웨어 인터럽트
      • 소프트웨어가 발생시키는 인터럽트로 예외 상황, system call 등의 상황에서 발생

     
     
    IO interrupt가 발생하면 내부적으로 어떤 일이 일어나나요? 

    • I/O 가 필요한 경우, 실행을 멈추고 System Call을 한다.
    • 해당 프로세스는 Waiting 상태로 이동하고 I/O 를 진행시키며 다른 프로세스에 CPU를 할당해 실행시킨다.
    • I/O 가 끝나면 다시 Ready 상태로 이동해서 CPU 할당을 기다린다.

     
     
     


    동시성 제어

     
    동시성과 병렬성의 차이가 무엇인가요? 

    • 동시성 :  메모리에 여러 프로세스를 적재, 번갈아 수행하여 동시에 실행되는것처럼 보이게 하는 것 / 싱글 코어에서 멀티스레드 동작시키는 방식
    • 병렬성 : 멀티 프로세싱에서 나온 개념, 실제로 동시에 여러 프로세스를 병렬적으로 수행하는 것 / CPU가 멀티 코어여야 한다. 

     
     
    Blocking - Non-blocking과 Synchronous - Asynchronous 차이에 대해 각각 설명해주세요.

    • Blocking VS Non-Blocking
      • 호출된 함수가 끝날 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않으면 Blocking
      • 호출된 함수가 끝나지 않아도 바로 제어권을 건네주어 호출한 함수가 다른 일을 진행할 수 있도록 해주면 Non-blocking
    • Synchronous VS Asynchronous 
      • 호출된 함수의 수행 결과와 종료를 기다리고, 순서대로 응답을 받을 수 있으면 Synchronous
      • 호출된 함수의 수행 결과와 종료를 기다리지 않고 순서대로 응답이 온다는 보장이 없으면 Asynchronous

     


     
     

    교착상태, 데드락, 경쟁상태

    경쟁상태가 발생하는 원인과 해결책에 대해 설명해주세요
    경쟁 상태는 공유 메모리를 사용하기 때문에 발생합니다.
    경쟁 상태를 해소하기 위해서는 공유 메모리를 쓰는 프로세스/스레드 간 동기화를 통해 순차적 실행을 보장하여 임계구역의 상호 배제를 이뤄지도록 합니다. 세마포어와 뮤텍스 등이 있습니다. 
     
     
    임계 영역이 무엇이고, 임계영역에 문제가 발생하지 않도록 만족해야하는 조건이 있나요? 
    여러 프로세스가 동시에 공유하면 안되는 자원에 접근하고 실행하는 프로그램의 부분을 의미합니다. 상호배제와 비어있는 임계영역에 어떤 프로세스가 진행할지 결정하고, 기아 상태를 방지하기 위해 한번 임계구역에 들어간 프로그램은 다음 진입에 제한을 둡니다. 
     
     
    데드락(교착상태)란 무엇인가요? 
    2개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 작업을 수행하지 못하고 자원을 무한정 기다리는 상태를 의미합니다. 
     
     
    데드락의 발생 조건에는 어떤 것들이 있나요? 

    • 상호배제 : 한 자원에 여러 프로세스가 동시에 접근할 수 없음
    • 점유대기 : 하나의 자원을 소유한 상태에서 다른 자원을 기다림
    • 비선점 : 프로세스가 어떤 자원의 사용을 끝낼 때까지 프로세스 자원 뺏을 수 없음
    • 순환대기 : 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있음

     
    뮤텍스와 세마포어의 차이에 대해 설명해주세요. 
    뮤텍스는 오직 하나의 스레드 || 프로세스만 접근할 수 있으며, 락을 획득한 스레드 || 프로세스가 락을 해제해야 합니다. 
    세마포어는 세마포어 변수만큼의 스레드 || 프로세스가 접근할 수 있으며 현재 수행중이 아닌 프로세스가 세마포어를 해제할 수 있습니다. 
     
     
    UNIX, Windows 등 대부분의 범용 OS가 채택하고 있는 데드락에 대한 조치 방식은 무엇인가요?

    • Deadlock이 일어나지 않는다고 생각하고 아무런 조치를 취하지 않습니다.
    • 사실 Deadlock은 매우 드물게 발생하므로 deadlock에 대한 조치 자체가 더 큰 overhead를 불러올 수 있기 때문에 시스템이 비정상적으로 작동하는 것을 사용자가 느끼고 직접 process를 kill하는 방식으로 해결합니다. 

     


    프로세스 & 스레드 

    프로세스와 스레드의 차이가 무엇인가요? 
    프로세스는 실행 중인 프로그램으로, 각 프로세스는 메모리 영역을 독립적으로 사용합니다. 
    스레드는 프로세스 내에서 프로세스 자원을 이용하여 실행되는 작업으로 Stack과 program counter만 따로 할당 받고, 그 이외의 메모리 영역을 공유합니다.
     
     
    프로세스 생성 과정에 대해 설명해보세요.

    • 프로세스 생성 시 PCB가 생성되고, 부모 프로세스의 내용을 복사해 주소공간을 할당한다. 그 후 자식 프로세스의 실제 데이터를 로딩한다. 그 후 프로세스를 ready queue에 넣고 CPU 할당을 기다린다.

     
    Context switching이 무엇인가요?

    • 멀티 프로세스 환경에서 CPU는 여러 프로세스를 돌아가면서 작업을 처리하므로, 현재 프로세스를 중단하고 다음 프로세스가 실행되어야 하는 경우가 발생합니다.
    • 현재까지 수행한 context를 저장해두고 다음 프로세스의 context로 교체하는 것을 의미합니다. 

     
    PCB에 대해 설명해주세요 
    프로세스 생성시 만들어지는 정보로 context switching 발생 시 프로세스의 상태를 기록해두었다가 복구할 때 사용합니다. 
     
     
    프로세스 status 중 suspended에 대해 설명해주세요

    • 사용자가 정지시키거나, 메모리에 너무 많은 프로세스가 올라가 있어 디스크로 swap out 된 상태를 의미합니다.  
    • Suspended Ready는 Ready 상태였던 프로세스가 swap out 당한 상태를 의미합니다. 
    • Suspended Block은 Blocked 상태의 프로세스 swap out된 것으로 blocked 된 조건이 충족되면 Suspended Ready로 바뀝니다. 
    더보기

    * swap out : 시스템 성능이 저하되는 경우 일부 프로세스로부터 메모리를 통째로 빼앗아 디스크의 swap 영역에 저장. 

    • Running : CPU 받아 명령을 수행중인 상태
    • Ready : CPU 제외한 메모리 등 모든 조건이 준비된 상태(메인 메모리로 로드된) - CPU만 받으면 당장 수행 가능한 상태
    • Blocked : CPU 받더라도 당장 실행 불가 -> I/O event 기다리거나 디스크에서 file 읽어와야 하는 등 저장매체에 액세스해서 이벤트 발생 대기중인 상태  
    • new : 프로세스를 위한 자료구조들은 생성, 아직 메모리 획득 승인은 못 받은 상태
    • terminated : 프로세스는 종료되었는데 프로세스와 관련된 자료구조 정리 완전히 못한 상태 
    • Suspended : 사용자가 정지시키거나 메모리에 너무 많은 프로세스가 올라가있어 디스크로 swap out된 상태

     
     
    멀티 스레드 방식이 멀티 프로세스 방식에 비해 가지는 장점에 대해 설명해주세요. 

    • 멀티 프로세스 방식만으로도 하나 이상의 작업을 수행할 수 있지만, 멀티 프로세스보다 메모리 등 자원을 적게 사용하고, 자원을 어느정도 공유하기 때문에 스레드 간 데이터 주고 받는 통신 비용이 적게 든다는 장점을 가집니다.  

     
     
    스레드가 독립적으로 할당하는 자원 2가지가 무엇이고, 왜 공유하지 않고 독립적으로 할당할까요?

    • Program Counter
      • 스레드의 명령어가 어디까지 수행되었는지 저장하는 부분으로 스레드가 CPU 할당받았다가 스케줄러에 의해 선점당하여 연속적으로 수행되지 못합니다. 따라서 각 스레드별로 수행된 부분을 기록할 필요가 있습니다. 
    • Stack 
      • 스택 영역에 함수 호출 시 전달되는 인자, 되돌아갈 주소 등을 저장하므로 함수에 따른 독립적인 실행 흐름을 갖기 위해 스택을 각각 할당해줄 필요가 있습니다. 

     
     
    크롬 브라우저에서 한 탭에 오류가 생기더라도, 다른 탭에 영향을 끼치지 않는데, 각각의 크롬 탭은 프로세스일까요? 스레드일까요? 

    •  한 탭에 오류가 생기더라도 다른 탭에 영향을 끼치지 않으므로 크롬 탭은 프로세스입니다. 

     


     
     

    메모리

     
    메모리 단편화란 무엇이고, 어째서 발생하나요? 
    RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용 가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모리 단편화가 발생했다고 합니다.

    •  내부 단편화(Internal Fragmentation) : 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 상황
    • 외부 단편화(External Fragmentation) : 메모리가 할당되고 해제되는 작업이 반복될 때 작은 메모리가 중간중간 존재하게 된다. 이 때 중간에 생긴 사용하지 않는 메모리들로 인해, 합쳐진 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황

     
     
    가상 메모리가 필요한 이유와 역할, 구현 방식에 대해 설명해주세요.
    메모리 크기보다 큰 사용자 프로그램을 실행가능하게 하기 위해 필요합니다.
     가상 메모리 기법을 사용하여 프로그램의 필요한 부분만 메모리에 적재하고,  필요하지 않은 메모리 공간은 디스크에 저장하게 됩니다.
    프로세스가 생성될 때 개별적인 주소 공간이 만들어지며, 이를 물리적 주소로 바꾸어 처리합니다.
     
     
    컴퓨터의 설계에 있어 캐시의 이점이 무엇인가요?
    데이터를 미리 복사해놓음으로써 접근 시간이나 다시 계산하는 시간을 줄여주고, 이로 인해 속도가 빠른 장치와 느린 장치 사이 속도차이에 따른 병목현상을 완화할 수 있습니다.  
     
     
    프로그램이 운영체제로부터 할당받는 메모리 공간의 구조에 대해 설명해주세요. 
    코드 영역, 데이터 영역, 스택 영역, 힙 영역으로 구성됩니다. 

    • Code : 프로그램의 코드 / 명령어들이 기계어로 저장된 영역
    • Data : 코드에서 선언된 전역 / 정적 변수가 저장되는 영역 -> 실행 시 할당되고 종료 시 소멸
    • Stack : 컴파일 타임에 크기 결정, 지역변수, 매개변수, 리턴 값 등 저장 
    • Heap : 런타임에 크기가 결정, 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역, 참조형 등 저장

     
    프로세스 스케줄링 알고리즘을 몇가지 예시를 들어 설명해주세요. 

    • 비선점형 
      • FCFS : 도착 순서대로 실행, 단순하지만 긴 프로세스 실행 시 다른 프로그램이 오래 기다림
      • SJF : 점유시간 가장 짧은 프로세스를 우선 처리, 기아 문제 (오래 걸리는 프로세스 CPU 할당을 못받음)
    • 선점형 
      • SRTF : 점유시간 가장 짧은 프로세스에 넘겨줌
      • RR : 시간 할당량을 각 프로세스마다 할당한 후 끝나면 CPU를 다른 프로세스에 할당 

     
     
    TLB란 무엇인가요? 
    고속 캐시의 일종으로, 주소로 접근되는 일반 메모리와는 다르게 키 값으로 찾고자 하는 워드를 동시에 접근하는 메모리입니다.
    페이지 테이블을 메모리에 두고 페이지 참조를 줄여서 접근 속도를 향상시키기 위해 사용하며, TLB miss시 페이지테이블을 참조합니다. 
     
     
    세그먼테이션이란 무엇인가요? 
    고정된 크기로 분할하는 고정 분할방식이 아닌, 크기가 동적으로 변할 수 있는 세그먼트로 나누는 기법입니다. 
    외부 단편화가 발생할 수 있습니다. 
     
     
    스레싱에 대해 설명해주세요. 
    페이지 부재율이 증가하여 swapping이 자주 일어나게 되고, 이로 인해 CPU 이용율이 급격히 떨어지는 현상을 의미합니다. 
    CPU 이용율이 낮으면 OS가 메모리에 올라간 프로세스의 수를 늘리고, 실행에 필요한 최소한의 프레임도 할당받지 못하게 되어 CPU 이용율이 지속적으로 떨어지는 악순환을 일으킵니다. 
     
    동시에 메모리에 올라가있는 프로세스의 개수를 조절하는 방식 

    • working set : 지역성 원리 이용하여 지역성 집합이 메모리에 동시에 올라갈 수 있도록 보장. 대신 충분한 페이지를 할당하지 않으면 작업집합에 있는 페이지를 물리 메모리에 유지하기 힘듦.
    • page fault frequency : 프로세스 페이지 부재율을 주기적으로 조사, 이 값에 근거하여 각 프로세스에 할당할 메모리 양을 동적으로 예측하고 조절하는 방식

     
    page fault 과정에 대해 설명해주세요

    • CPU가 프로그램을 실행하면서 필요한 페이지가 물리 메모리에 없는 경우가 생기는데 이를 page fault라고 합니다.
    • page fault가 발생하면 디스크로부터 해당 페이지를 가져오고, 메모리 상 페이지와 스와핑, 페이지 테이블 갱신 후 프로그램을 다시 실행합니다. 

     

    파일 시스템

    USB에서 많이 쓰는 FAT 파일 시스템의 단점을 아시나요? 
    파일 할당 여부를 체크하는 file allocation table에 대한 용량을 소비하며, 할당 여부만 확인 가능하여 기능이나 보안부분이 다소 떨어집니다. 대신 USB처럼 많은 기능, 보안 수준이 필요없는 장치에 사용됩니다. 
     
    I-node 파일 시스템에 대해 간단히 설명해주세요
    파일과 관련된 정보들을 테이블 형태로 저장하며, 각 파일마다 inode 번호를 할당하여 파일을 구분하고 찾습니다.
    실제 데이터 블록은 inode가 가리키는 위치에 저장됩니다. 

    'CS' 카테고리의 다른 글

    CS - Java & Spring 정리  (0) 2023.11.09
    CS - 네트워크 정리  (0) 2023.10.26
    CS - 데이터베이스 정리  (0) 2023.10.19
    CS 스터디 운영체제 Q&A (2)  (0) 2023.10.04
    소프트웨어 공학 및 알고리즘 Q&A  (0) 2023.09.27
Designed by Tistory.