[cs 정리]운영체제

jiwon·2022년 5월 2일
0

Computer Science

목록 보기
5/5
post-thumbnail
post-custom-banner

1. 운영체제란 무엇인지 설명해주세요

운영체제 ( Operating System )는 컴퓨터 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어입니다. Windows, Linux, Mac 등이 운영체제에 속합니다.

2. 프로세스와 스레드의 차이를 설명해주세요

프로세스는 운영체제로부터 자원을 할당받은 작업의 단위를 말합니다. 반면 스레드는 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위를 말합니다. 프로세스는 다른 프로세스의 메모리 공간에 접근할 수 없으나, 스레드는 Code, Data, Heap영역은 공유한다.(stack은 공유x)

🔎스레드가 스택만 공유 안하는 이유는, 후입 선출이라는 스택의 특성상 공유했다가 너무 복잡해지기 때문이라고 한다..

운영체제로부터 자원을 할당받은 작업의 단위

cpu 스케줄링 처음 배울때 '화장실에 줄 선 사람' 비유를 통해 배웠다.

  • 교수님: 화장실 이용이 빠른 사람 먼저 화장실을 사용한다면, 화장실이 이용이 느린 사람은 영영 화장실을 이용 못 할지도 모릅니다...

여기서 화장실이 자원, 사람이 프로세스이다.

프로세스의 메모리 할당

스레드의 메모리 할당

3. 멀티 스레딩의 장점과 단점을 설명해주세요

멀티 스레딩을 사용하면 자원 공유를 더 효율적으로 할 수 있습니다. 하지만, 단일 스레드에 비해 더 테스트, 디버깅이 어렵고 동기화에 주의하여 구현해야 합니다.


멀티 스레딩 : 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시키는 것

장점

  • 응답성: 응답 시간 단축
  • 경제성: 자원 공유로 경제성 ↑
  • 프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 훨씬 간단

단점

  • 단일 프로세스 시스템에선 효과 기대하기 힘듦
  • 임계영역으로 인한 오류 가능성

4. 멀티 프로세싱과 멀티 프로그래밍의 차이는?

다수의 프로세서가 서로 협력적으로 일을 처리하는 것이 멀티 프로세싱입니다. 하나의 프로세서가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법이 멀티 프로그래밍입니다.

멀티 프로세싱

다수의 프로세서가 서로 협력적으로 일을 처리하는 것
❗프로세스가 아니라 프로세서이다❗
프로세서는 cpu 등의 하드웨어를 의미하며, 프로세스는 프로세서에 의해 실행되고 있는 프로그램을 말한다.

멀티 프로그래밍

하나의 프로세서가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법. 멀티 프로그래밍은 입출력이 완료될 때까지 기다리는 시간을 버리지 말고 다른 프로세스를 처리할 수 있도록 해주는 것이다.

5. 스케줄러에 대해 설명해주세요

스케줄러란 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 모듈을 지칭합니다. 스케줄러에는 장기, 단기, 중기 스케줄러가 있습니다.

장기 스케줄러

작업 스케줄러라고도 부름. 디스크에서 하나의 프로그램을 가져와 커널에 등록하면 프로세스가 되는데 이때 디스크에서 어떤 프로그램을 가져와 준비 큐에 넣을지 결정

중기 스케줄러

메모리에 공간이 부족한 경우 어떤 프로세스를 swap out(메모리를 통째로 빼앗아 그 내용을 디스크의 스왑 영역에 저장)할지 결정

단기 스케줄러

cpu 스케줄러라고도 부름. 다음으로 어떤 프로세스를 실행시킬지 결정

6. Context Switching이란 무엇인지 설명해주세요

현재 진행하고 있는 Task의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정을 말합니다.

7. semaphore에 대해 설명해주세요

공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해야 하는데, 이를 위해 고안된 것이 세마포어입니다. 세마포어는 세마포어는 공통으로 관리하는 하나의 값을 이용해 상호배제를 달성합니다.

동기화를 잘못하면 임계구역(Critical Section)에서 다양한 문제가 발생할 수 있다. (ex: 여러 스레드들의 읽기와 쓰기 작업이 겹쳐서 이상하게 꼬인다든지) 이를 위해 고안된 것이 바로 세마포어와 뮤텍스이다.

뮤텍스

Key를 기반으로 한 상호배제기법
화장실 예제로 비유하자면... 공유 화장실에 들어가기 위해선 key가 필요하다. key를 가진 사람만 화장실에 들어갈 수 있고, 화장실 문짝에 키가 안달려 있으면 다른 사람은 대기해야 한다.

세마포어

공통으로 관리하는 하나의 값을 이용해 상호배제를 달성
화장실 예제로 비유하자면... 화장실이 한 3개 있다고 치면, 문짝 앞 전광판에 사용 가능한 화장실의 수가 크게 나와있다. 사람들은 화장실 사용 가능 숫자가 1 이상이면 전광판의 숫자를 -1 하고 화장실에 들어가고, 나올때 전광판의 숫자를 +1 해준다.

8. 힙 영역과 스택 영역의 차이점을 설명해주세요

스택은 빠르지만, 메모리 제한이 있습니다. 힙은 메모리 크기 제한은 없으나, 메모리를 직접 관리해야하고 상대적으로 느립니다.

9. 메모리 관리 전략에 대해 설명해주세요

메모리를 관리 기법 중 불연속 메모리 관리 기법으로 페이징과 세그멘테이션이 있습니다. 페이징은 페이지라는 고정 크기로 logical memory를 분리하고, 페이지와 같은 크기의 프레임으로 physical memory를 분리합니다.페이징을 통해 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절하게 배치됨으로 외부 단편화 해결합니다. 세그멘테이션은 페이징과는 달리 서로 다른 크기의 논리적 단위인 세그먼트로 메모리를 분리합니다. 메모리 사용 효율이 개선되고 동적 분할을 통한 오버헤드가 감소합니다.

단편화

메모리 공간이 충분함에도 불구하고 프로세스가 메모리에 적재되지 못해 메모리가 낭비되는 현상

  • 외부 단편화: 가변 분할 방식에서 여유 공간들이 조각조각 흩어져 있어 낭비되는 현상
  • 내부 단편화: 고정 분할 방식에서 프로세스가 실제 사용해야할 메모리보다 더 큰 메모리를 할당받아 메모리가 낭비되는 현상

메모리 관리 전략

  • 연속 메모리 할당: 단편화 문제 발생
    • 최초 적합(가장 먼저 만나는 빈 공간에 적재)
    • 최적 적합(가장 딱 맞는 빈 공간에 할당)
  • 불연속 메모리 할당
    • 페이징(외부 단편화 해소)
    • 세그멘테이션(내부 단편화 해소)
profile
개발 공부합니다. 파이팅!
post-custom-banner

0개의 댓글