운영체제(OS)는 커널(Kernel)을 의미합니다.
컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 완전히 통제합니다.
일반적으로 커널에 여러가지를 추가한 상태를 OS라고 통칭합니다.
안드로이드는 운영체제가 아닙니다.
안드로이드는 스마트폰, 태블릿 PC 같은 터치스크린 모바일 장치 용으로 디자인된 운영체제이자 수정된 리눅스 커널 버전을 비롯한 오픈 소스 소프트웨어에 기반을 둔 모바일 운영 체제입니다.
쉘이란? 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램입니다.
쉘은 터미널 환경과 GUI환경 두 종류로 분류합니다.
*유명한 쉘 : 리눅스 bash
시스템 호출 인터페이스 입니다.
운영체제가 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공하고 있습니다.
API(Application Programming Interface)는 함수 또는 라이브러리입니다.
API 내부에는 필요할 시 해당 운영체제의 시스템콜을 호출하는 형태로 제작되었습니다.
커널에서 중요한 자원을 관리하기 때문에 사용자가 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눈 것입니다.
예시: 동사무소 직원은 특별한 권한이 있기 때문에 등본 출력 명령을 실행할 수 있습니다.
시스템자원 = 컴퓨터 하드웨어
- CPU, Memory
- I/O Device : 모니터, 마우스, 키보드, 네트워크
- 저장매체 : SSD, HDD
유저와 컴퓨터의 커뮤니케이션을 하는 역할을 합니다.
- 프로그램 = 소프트웨어
- 소프트웨어 = 운영체제, 응용 프로그램
- 응용 프로그램 = Application = App
운영체제는 응용 프로그램을 관리합니다.
1. 응용 프로그램을 실행시킨다.
2. 응용 프로그램간의 권한을 관리해준다. (관리자 권한)
3. 응용 프로그램을 사용하는 사용자도 관리 (로그인)
💡 응용프로그램은 누구나 만들 수 있습니다.
만약, 응용 프로그램이 CPU를 자기만 쓰겠다고 하면 운영체제에서 막습니다.
실행 중인 프로그램을 프로세스라고 합니다.(바이너리는 실행 파일)
응용 프로그램은 프로세스가 아닙니다. (응용 프로그램은 여러 프로세스로 구성 가능)
여러 프로그램을 순차적으로 실행시켜야합니다.
어떤 프로그램은 실행시간이 오래걸려, 다른 프로그램이 실행되는데 시간을 많이 기다려야 합니다.
- 운영체제는 시스템 콜을 기본적으로 제공합니다.
- 프로그래밍 언어별 운영체제를 지원하기 위해, 운영체제 별로 API 따로 제공합니다.
- 응용 프로그램 개발시 운영체제 기능이 필요한 경우에는 API를 사용하여 제작합니다.
- 응용 프로그램 실행시 해당 API를 호출하면 시스템 콜 호출 후 커널모드로 변경되며 OS 내부에서 명령이 실행되고 응용 프로그램에 결과를 리턴합니다.
- 운영체제는 시스템 자원, 응용 프로그램 관리, 효율적 분배를 담당합니다.
- 응용 프로그램이란 소프트웨어 입니다.
와 정리가 너무 굿굿!! 👍👍