반응형
기업 면접을 준비하기 위해 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의 경우 페이지 테이블과 세그먼트 테이블 주소 변환이 다수 일어나기 때문에 연산 속도가 다소 느림
반응형
'IT > CS지식[면접대비]' 카테고리의 다른 글
[면접대비 CS지식] 운영체제 - 프로세스 기초 (0) | 2020.12.21 |
---|