운영체제(Operating System)이란 컴퓨터 시스템의 하드웨어, 소프트웨어적인 자원들을 효율적으로 운영 및 관리함으로써 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 하는 시스템 소프트웨어이다.
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 즉, 중개자 역할을 해주는 프로그램이다.
- CPU 스케줄링과 프로세스 관리
- 메모리 관리
- 디스크 파일 관리
- I/O 디바이스 관리
* 용어 정리
- GUI(Graphic User Interface): 사용자가 전자장치와 상호작용할 수 있도록 하는 사용자 인터페이스의 한 형태
단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있도록 해준다.
- 드라이버: 하드웨어를 제어하기 위한 소프트웨어
- 커널: 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스,
I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.
시스템 호출
시스템 호출(System Call)
이란 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 즉, 사용자가 커널에 접근할 수 있는 유일한 수단이 시스템 호출이다.
이러한 시스템 호출을 만든 이유는 사용자나 응용 프로그램으로부터 컴퓨터 자원을 직접적으로 접근하는 것을 막아 보호하기 위함
이다.
시스템 호출이 작동될 때 modebit을 참고하여 유저 모드와 커널 모드를 구분한다.
modebit이란 1 또는 0의 값을 가지는 플래그 변수를 의미하는데 0은 커널 모드, 1은 유저 모드
라고 설정되며 유저 모드일 경우에는 시스템 호출을 못하게 막아 한정된 일만 가능하게 하는 역할을 한다.
* 용어 정리
- 유저 모드 : 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드이다.
- 커널 모드 : 운영체제가 CPU를 사용하는 모드로 모든 컴퓨터 자원에 접근할 수 있는 모드이다.
위 그림과 같이 유저 프로세스는 사용자 모드에서 실행되다가 시스템 자원을 사용해야 할 때 시스템콜을 호출하고 modebit에서 1에서 0으로 바꾸며 커널 모드로 변경한 후 작업을 수행하고 완료 시 다시 modebit을 0에서 1로 바꿔서 유저 모드로 전환한다.
메모리란 컴퓨터에서 정보를 처리하기 위해 일시적으로 정보를 보관하는 기억장치이다.
기억장치에 대해 더 자세한 내용이 궁금하다면,
지난번에 제가 정리해둔 컴퓨터 구조에 대해 요약해 놓은 포스팅을 참고해주세요❗
[CS] 컴퓨터 구조 - 하드웨어와 소프트웨어, 프로그래밍 언어(기계어, 어셈블리어, 고급언어)
모든 프로그램은 '메모리'에 올라와야 실행할 수 있다.
즉, 어떤 프로그램이 동작하기 위해서는 제일 먼저 메모리에 존재해야 한다는 의미이다.
CPU는 그저 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐이다.
그래서 이 메모리를 효율적으로 사용하기 위해 메모리 계층 구조가 등장하게 되었다.
메모리 계층은 CPU(래지스터), 캐시, 메모리, 저장장치로 구성되어 있다.
- 래지스터: CPU안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적다.
- 캐시: L1, L2 캐시를 지칭. 휘발성, 속도 빠름, 기억 용량이 적다. L3 캐시도 있다.
- 주기억장치: RAM을 가리킨다. 휘발성, 속도 보통, 기억 용량 보통
- 보조기억장치: HDD, SDD를 일컫는다. 휘발성, 속도 낮음, 기억 용량 많다.
캐시(cache)는 데이터를 미리 복사해 놓은 임시 저장소이자
빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 의미한다.
CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킨다.
이처럼 주어진 시간 동안의 메모리 참조는 국한된 영역에서만 이루어지는 경향이 있다.
이를 참조의 국한성(Locality of reference)
이라고 한다.
캐시에서 원하는 데이터를 찾았다면 캐시히트라고 하며,
해당 데이터가 캐시에 없다면 주메모리로 가서 데이터를 찾아오는 것을 캐시미스라고 한다.
📍 Reference
https://www.interviewbit.com/operating-system-interview-questions/
https://chosh95.tistory.com/321
https://www.scaler.com/topics/operating-system/system-calls-in-operating-system/
https://gyoogle.dev/blog/computer-science/computer-architecture/%EC%BA%90%EC%8B%9C%20%EB%A9%94%EB%AA%A8%EB%A6%AC.html