[CS 기본 개념] 전공면접 준비자료 #5 Operating System

dk-kling·2022년 3월 17일
7

Lecture Concept

목록 보기
5/7
post-thumbnail

😄 제가 대학원 준비과정에서 정리했던 컴퓨터공학과 기본 과목을 공유합니다!
📬 댓글로 이메일 남겨주시면 한글 파일 보내드리겠습니다!
PS: 이현경 취업 성공 기원

📚 Operating System

1. Process (프로세스)

프로그램을 메모리상에서 실행 중인 작업
프로세스는 각각 별도의 주소 공간 할당 (독립적)

  • Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
  • Data : 초기화된 전역변수, 정적변수, 배열 등
  • BSS : 초기화되지 않은 데이터
  • Heap : 동적 할당 시 사용 (new(), malloc() 등)
  • Stack : 지역변수, 매개변수, 반환값 (임시 메모리 영역)

2. Multi-Process (멀티프로세스)

여러 CPU가 하나 이상의 프로세스들을 동시에 처리 (병렬)

  • 장점 : 안전성 (메모리 침범 문제를 OS 차원에서 해결)
  • 단점 : 작업량 많을수록 오버헤드 발생. Context Switching으로 인한 성능 저하

3. Thread (스레드)

프로세스 안에서 실행되는 여러 흐름 단위
스레드는 Stack만 따로 할당받고 나머지 영역은 공유


4. Multi-Thread (멀티 스레드)

하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
공유 메모리를 통해 다수의 작업을 동시에 처리

  • 장점 : 공유 메모리만큼의 시간ㆍ자원 손실 감소
    전역변수와 정적변수에 대한 자료 공유 가능
  • 단점 : 안전성 문제 - 하나의 스레드가 데이터 공간 망가뜨리면,
    모든 스레드가 작동 불능 상태 (공유 메모리를 갖기 때문)

5. Context Switching

프로세스의 상태 정보를 저장하고 복원하는 일련의 과정

즉, 동작 중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구하는 과정을 말함

→ 프로세스는 각 독립된 메모리 영역을 할당받아 사용되므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되었을 때 오버헤드가 발생할 문제가 존재함


6. 인터럽트(Interrupt)

프로그램 실행 도중에 예기치 않은 상황이 발생할 경우 실행 중인 작업을 중단하고, 발생상황에 대한 우선 처리

① 수행 중인 프로그램 정지
② 상태 레지스터와 PC 등을 스택에 임시 저장
③ 인터럽트 서비스 루틴으로 이동
④ 인터럽트 기능이 없었다면, 컨트롤러는 폴링 수행

  • Polling (폴링)
    특정한 어떤 일을 할 시기를 알기 위해 지속적으로 체크
    폴링을 하는 시간에는 원래 하던 일에 집중할 수 없어 많은 기능을 제대로 수행하지 못하는 단점이 있었다.
    즉, 컨트롤러가 입력을 받아들이는 방법(우선순위 판별방법)에는 두가지가 있다.

폴링 방식
사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식
인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아 이에 맞는 인터럽트 서비스 루틴을 수행한다. (하드웨어에 비해 속도 느림)

인터럽트 방식
MCU 자체가 하드웨적으로 변화를 체크하여 변화 시에만 일정한 동작을 하는 방식
인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다. 따라서 '실시간 대응'이 필요할 때는 필수적인 기능이다.
즉, 인터럽트는 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법이다.

profile
STAR-LAB

0개의 댓글