반응형

 


기업 면접을 준비하기 위해 CS지식을 정리해야하는데, 

가장 좋은 수단이 블로그인 것 같아서 정리를 시작합니다. 제가 스스로 이해하기 편한 수준으로만 간략히 적어 내용이 조금 부실할 수 있는 점 양해 부탁드립니다 : )


운영체제란?

  • 하드웨어 자원들을 관리하는 프로그램들의 집합
  • 응용프로그램들을 위한 System Service Provider
  • 하드웨어와 응용프로그램을 이어주는 연결부
  • 단순 SW뿐만 아니라 주변기기를 포함한 하드웨어도 모두 관리
  • 전력 불안정, 프린터의 용지 부족, 네트워크 연결 실패등 모두 OS가 인지
    (일반적으로 Log 파일 형태로 저장됨)
  • Kernel Mode Operation과 User Mode Operation을 제공

System Call이란?

  • 운영체제의 서비스에 접근하기 위한 인터페이스
  • 권한이 낮은 응용SW가 커널에서 제공하는 서비스를 사용하는 방법

Kernel 이란?

  • 운영체제의 핵심이 되는 컴퓨터 프로그램
  • 부팅하는 동안 메모리를 로드하는 운영체제의 첫 부분
  • 지속적으로 읽어들일 수 있도록 되어 있으며, 메모리 상에서 사용자가 접근할 수 없도록 커널 영역에서 보호됨

 

Command Interpreter란?

  • OS나 프로그래밍 언어의 환경에서 입력된 명령어를 해석하여 실행하는 컴퓨터 프로그램
  • 줄 단위로 명령어를 읽어들인다고하여 Command Line Interpreter라고 하기도 함
  • 사용자 또는 명령어 파일로부터 명령어를 읽어들인 후, 명령어를 시스템 콜로 변환하여 이를 실행
  • Bash쉘이나 Zsh등이 이에 해당

OS의 자원 관리 방법

  • 시분할 : CPU 스케줄링을 통한 멀티프로세스 실행과 같이 스케쥴러를 통해 시간적으로 분할하는 것
  • 공간분할 : Memory, Disk등 하드웨어 자원을 여러 프로세스나 유저가 사용할 수 있도록 공간적으로 분리하는 것

컴퓨터 부팅과정

  • Booting은 Bootstrapping의 간략화된 표현으로, 원래는 Bootstrapping이 정확한 표현
  • BIOS가 시스템의 하드웨어 이상유무 점검
  • 전원 공급 후 부트로더를 통해 Bootstrap Program 메모리 적재
  • Bootstrap Program이 커널을 적재하고 실행
  • 커널에 의해 init 프로세스 생성, OS 초기화 작업 수행

인터럽트란?

  • 주변 환경에 반응하고 상호작용하기 위해 OS에서 사용
  • 입출력 하드웨어의 변화나 예외상황 처리가 필요할 경우 CPU(마이크로프로세서)에게 알려 처리할 수 있도록 함
  • 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉨

하드웨어 인터럽트(비동기식 인터럽트)

  • 하드웨어가 발생시키는 인터럽트
  • 버스를 통해 CPU에 직접 시그널을 보냄
  • 비동기식 인터럽트라고도 함 (정해진 기준 없이 예측 불가하게 이벤트 발생)

소프트웨어 인터럽트(동기식 인터럽트)

  • 사용자가 인터럽트를 직접 호출하는 것은 금지
  • 시스템 콜을 통해서만 가능
  • Exception이라고 불리기도 함
  • 명령어 실행 후 그 결과(instruction fault)로 발생하는 경우가 많음

TRAP

  • 실행 중인 프로그램 내에 테스트를 위해 특별한 조건을 걸어놓은 것
  • 인터럽트, 예외가 발생되면 trap에 의해 catch
  • trap handler가 상황에 맞게 처리
  • 주 사용목적은 디버깅(Breakpoint)

인터럽트 과정

  • 소프트웨어에서 시스템 콜을 통해 인터럽트 발생
  • 현재 프로세스의 상태 정보(MEM주소, 레지스터값, 하드웨어 상태등)를 해당 프로세스의 PCB(Process Control Block)에 저장
  • PC(Program Counter, IP)에 다음에 실행할 명령의 주소를 저장
  • 인터럽트 별로 인터럽트 핸들러의 주소가 담겨있는 인터럽트 벡터를 읽고 ISR 주소값을 얻어 인터럽트 핸들러 역할을 하는 ISR(Interrupt Service Routine)로 점프하여 루틴 실행
  • 실행이 완료되면 레지스터 값들을 복원
  • ISR의 끝부분에 존재하는 IRET 명령어에 의해 인터럽트 해제
  • 저장해둔 PC 값을 복원하고 이전 실행 위치로 복원
  • 위와 같은 Context Switch 과정을 거침

단편화(Fragmentation)

  • 메모리 할당과 해제가 계속하여 이루어지는 환경에서 발생하는 현상
  • 공간이 할당되었는데도 불구하고 사용하지 않는 공간이 있거나, 전체적으로 봤을 땐 빈공간이 충분한데도 불구하고 연속된 메모리 공간이 없어 사용할 수 없는 경우 등 메모리 낭비
  • 내부 단편화와 외부 단편화, 데이터 단편화로 나뉨

내부 단편화(Internal Fragmentation)

  • 메모리 할당이 이뤄질 때, 해당 Process가 필요한 양보다 더 큰 메모리가 할당되어 메모리 공간이 낭비
  • 80MB가 할당되었는데 사실상 60MB만 사용된다면 20MB만큼 내부 단편화 발생
  • 세그멘테이션 기법으로 해결이 가능

외부 단편화(External Fragmentation)

  • 메모리 할당과 해제가 반복되어 작은 메모리 중간중간에 사용하지 않는 메모리 공간인 hole이 다수 생기게 됨
  • hole이 연속적이지 않고 흩어져있게 되면 총 공간은 충분함에도 불구하고 새로운 작업이 적재되지 못함
  • 페이징 기법으로 해결이 가능

Paging 기법

  • 보조기억장치를 이용한 가상 메모리(Virtual Memory)를 같은 크기의 블록으로 나눔 이것이 Page
  • 주 기억장치 또한 Page와 같은 크기로 나눔, Frame이라는 명칭을 사용
  • 사용하지 않는 프레임을 페이지에 옮기고, 필요한 메모리를 페이지 단위로 프레임에 옮기는 방식
  • 프로세스 내부에 존재하는 페이지가 굳이 연속적으로 적재될 필요가 없음
  • 다만, Page를 가득채우지 못하는 경우가 발생하면 내부 단편화는 생김(예, 4kb인 페이지단위에 1kb만 사용할 경우)
  • 하지만 외부 단편화 대비 미미한 수준

Segmentation 기법

  • Segmentation 기법은 가상메모리를 서로 크기가 다른 논리적 단위인 세그먼트로 분할하여 메모리에 할당
  • 세그먼트의 크기는 제각각이기 때문에, hole이 다수 발생하게 될 경우 마찬가지로 외부 단편화 문제가 발생함
  • Segmentation 기법은 보호와 공유 관점에서 매우 효율적이므로, intel은 이 두가지 방식을 혼용하기도 함
    세그먼트를 페이징 기법으로 나누는 Paged Segmentation등
  • Paged Segmentation의 경우 페이지 테이블과 세그먼트 테이블 주소 변환이 다수 일어나기 때문에 연산 속도가 다소 느림
반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,