1. 운영체제란?

OS(Operating System)

의미

직역하면 작동하는 시스템이다. 알려진 주요 운영체제는 윈도우 내가 제일 싫어하는 리눅스, mac(OS)이다. 보통은 윈도우와 macos가 익숙하지만 개발자라면 리눅스 환경에서 터미널을 이용해보는 작업을 필수는 아니지만 필요하다고 생각합니다.

운영체제가 제공하는 것

  1. 사용자 인터페이스 제공 : 쉘
  2. 응용프로그램 인터페이스 제공 : 시스템콜
  3. 프로그래밍 언어별 해당 운영체제에 맞는 API 구현

1. Shell(쉘):

  1. 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램
  2. 쉘은 터미널 환경인 CLI와 GUI 두 종류로 분류된다**
    가장 유명한 쉘은 리눅스 bash!

2. System Call(시스템콜):

  1. 시스템 콜 또는 시스템 호출 인터페이스

  2. 운영체제 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공

  3. C/C++언어로 되어 있음

    3. API(Application Programming Interface):

  4. 간단하게 함수 또는 라이브러리

  5. API 내부에는 필요시 해당 운영체제의 시스템콜을 호출하는 형태로 만들어짐

지금까지 내용에서 질문 사항

왜 프로그램이 os별로 있을까요?
-> 각 언어별로 api도 다르고 시스템콜도 다르기 때문!

CPU Protection Ring

  1. 사용자 모드 : 응용프로그램 사용
  2. 커널 모드 : OS가 사용
  • 시스템 콜은 커널 모드로 실행함

따라서 사용자 모드와 커널모드를 오가며 응용프로그램과 운영체제가 작동함

운영체제의 역할

정리:

1. 시스템 자원 관리자

2. 사용자와 컴퓨터간의 커뮤니케이션 지원

3. 응용 프로그램 제어

2. 응용프로그램이란?

운영체제 위에서 돌아가는 프로그램
PC의 응용프로그램 : Application
모바일의 응용프로그램 : App

운영체제와 응용 프로그램간의 관계

  1. 운영체제는 응용 프로그램을 관리
  • 응용 프로그램 실행
  • 응용 프로그램 권한 관리
  • 사용자도 관리
  1. 응용프로그램은 누구나 만들 수 OK!
  • but, 문제가 있을 때 운영체제가 막는다

따라서 운영체제는 사용자가 사용하는 응요 프로그램이 효율적이고 적절하게 동작하도록 지원한다!

3. 프로세스 (Process)

의미

  • 프로세스 : 메모리에 올려져서, 실행 중인 프로그램, 바이너리 실행 파일
  • 응용프로그램은 프로세스가 아니다!
    응용프로그램은 여러 프로세스로 구성 가능

프로세스 스케줄링

: 프로세스를 언제 실행 시킬 것인지?

1. 배치 처리 시스템

2. 시분할 시스템

3. 멀티 태스킹

1. 배치 처리 시스템

여러 프로그램을 순차적으로 진행 : QUEUE 자료구조
단점으로는 다른 프로그램을 실행하는데 시간 소모가 큼

2. 시분할 시스템

UNIX -> 리눅스로 발전
다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템
서버 컴퓨터에서 일반적으로 사용

3. 멀티 태스킹

단일 CPU에서 여러 응용 프로그램이 동시 실행되는 것처럼 보이는 시스템
10~20ms의 작은 단위로도 실행 응답시간, 응용프로그램이 바뀜

profile
친화력 좋고 긍정적인 개발자입니다!

0개의 댓글