본문 바로가기
부트캠프교육중/CS

운영체제, 프로세스

by 뭉지야 2023. 3. 28.
728x90

<운영체제>
-하드웨어에게 일을 시키는 주체가 운영체제이다.

#운영체제의 목적 
-처리능력 향상
-사용 가능도 향상
-신뢰도 향상
-반환 시간 단축 등...

#운영체제의 기능
-프로세서, 기억장치, 입출력장치, 파일 및 정보 등의 자원을 관리합니다.
-자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공합니다. 스케줄링이란 어떤 자원을 누가, 언제, 어떤 방식으로 사용할지를 결정해주는 것을 뜻합니다.
-사용자와 시스템 간의 편리한 인터페이스를 제공합니다.
-시스템의 각종 하드웨어와 네트워크를 관리하고 제어합니다.

#운영체제의 시스템 자원 관리
-운영체제가 없다면, 응용 프로그램이 실행될 수 없습니다.
-응용 프로그램은 컴퓨터를 이용해 다양한 작업을 하는 것이 목적이고, 운영체제는 응용 프로그램이 하드웨어에게 일을 시킬 수 있도록 도와줍니다.
-하드웨어를 구성하는 일을 하는 CPU, 자료를 저장하는 RAM, 디스크 등의 시스템 자원을 관리하는 주체가 바로 운영체제입니다.

#응용 프로그램 관리
-응용 프로그램은 권한에 대한 관리가 필요합니다
-여러 사람이 하나의 기기를 사용하는 경우에는 사용자를 관리하는 일도 매우 중요합니다.
-응용 프로그램이 실행되고, 시스템 자원을 사용할 수 있도록 권한과 사용자를 관리합니다.

#응용 프로그램
-운영체제를 통해 컴퓨터에게 일을 시키는 것
-응용 프로그램이 운영체제를 통해 컴퓨터에게 일을 시키려면, 컴퓨터를 조작할 수 있는 권한을 운영체제로부터 부여받아야 합니다.
권한을 부여받고 난 후에는, 운영체제가 제공하는 기능을 이용할 수 있습니다. 응용 프로그램이 운영체제와 소통하기 위해서는, 운영체제가 응용 프로그램을 위해 인터페이스(API)를 제공해야 합니다. 응용 프로그램이 시스템 자원을 사용할 수 있도록, 운영체제 차원에서 다양한 함수를 제공하는 것을 시스템 콜(System call)이라고 부릅니다.
-워드프로세서 프로그램이 프린터를 사용해서 인쇄하기 위해서는, 워드프로세서 프로그램은 운영체제로부터 프린터 사용에 대한 권한을 부여받아야 합니다.응용 프로그램이 프린터 사용에 대한 권한을 획득한 후에는, 프린터를 사용할 때 필요한 API를 호출해야 합니다. 이 API는 시스템 콜로 이루어져 있습니다.


<프로세스>
-프로세스는 프로그램이 실행 중인 상태로 특정 메모리 공간에 프로그램의 코드가 적재되고 CPU 가 해당 명령어를 하나씩 수행하고 있는 상태를 의미한다.
-운영 체제에서는 프로세스를 사용하여 프로그램을 수행하게 되는데 실행 중인 하나의 애플리케이션을 프로세스라고 부릅니다. 
-실행되는 애플리케이션을 프로세스라고 부릅니다.
- 예를 들어 Chrome 브라우저를 두 개 실행하면, 두 개의 프로세스가 생성됩니다.

<프로세스 구성요소>
#유저 메모리 영역 관리(Virtual Address Descriptors)
-프로세스마다 독립적으로 관리해야 하는 유저 메모리 영역
-프로세스 별로 독립된 영역을 가지게 되는 곳은 유저 메모리 공간입니다. 
-커널 메모리 공간의 경우 모든 프로세스가 공유하여 사용하고 있습니다. 프로세스 별로 독립적인 유저 메모리 영역을 관리하기 위해서 VAD(Virtual Address Descriptors)라는 관리 테이블이 존재합니다.

#핸들 테이블(Handle Table)
-프로세스가 사용하는 각종 객체들의 포인터를 관리하는 핸들 테이블
-프로세스에서 사용하는 모든 핸들에 대한 커널 객체 포인터 정보를 배열 형태로 가지고 있는 공간입니다.
-프로세스가 종료하게 될 때 이 테이블의 정보를 참고하여 이 프로세서에서 사용하고 있는 모든 커널 객체를 자동으로 반환합니다.

#독립적인 메모리 공간
-프로세스 단위로 관리되는 자원 중 가장 중요한 구별점은 가상 메모리입니다. 
-페이징 기법을 이용하여 프로세스마다 별도의 고유한 메모리를 사용할 수 있게 하고 있습니다(윈도우의 경우).

<프로세스 특징>
#자원 소유의 단위
-각각의 프로세스는 자신의 실행 이미지 로드와 실행에 필요한 추가적인 메모리 공간을 가지고 있어야 합니다. 이것은 각 프로세스마다 구별되어야 하며 해당 프로세스가 접근하고자 하는 파일, I/O 장치들에 대해서 또한 프로세서 단위로 할당 받아 관리되어야 합니다.
#디스패칭의 단위
-프로세스는 하나의 프로그램이 운영체제로부터 CPU 의 자원을 일정 기간 동안 할당 받아 명령어를 실행하는 것이며, 운영체제는 여러 개의 프로세스가 병렬적으로 실행되게 하기 위해서 CPU 의 사용 시간을 각각의 프로세스에 골고루 나누어 주어야 합니다. 하나의 프로세스에서 여러 개의 디스패칭 단위가 실행될 수 있도록 하고 있으며, 이러한 디스패칭 단위를 스레드라 부릅니다.


<프로세스 상태>
-실행(Run) : 프로세스가 프로세서를 차지하여 서비스를 받고 있는 상태를 말합니다.
-준비(Ready) : 실행될 수 있도록 준비되는 상태를 말합니다.
-대기(Waiting) : CPU 의 사용이 아니라 입출력의 사건을 기다리는 상태를 말합니다.

<프로세서 VS 프로세스>
#프로세서(Processor)
-하드웨어적인 측면 : 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛으로, 중앙처리장치(CPU)를 의미하며 적어도 하나 이상의 ALU와 레지스터를 내장하고 있습니다.
-소프트웨어적인 측면 : 데이터 포맷을 변환하는 역할을 수행하는 데이터 처리 시스템을 의미합니다. 워드프로세서나 컴파일러 등이 여기에 속합니다.
#프로세스(Process)
-특정 목적을 수행하기 위해 나열된 작업의 목록을 의미합니다. 
-메모리에 적재 되어 프로세서에 의해 실행 중인 프로그램을 프로세스라고 볼 수 있습니다.


출처

코드스테이츠

728x90

'부트캠프교육중 > CS' 카테고리의 다른 글

문자열과 그래픽  (0) 2023.03.28
스레드  (0) 2023.03.28
Memory  (1) 2023.03.28
CPU  (0) 2023.03.28
컴퓨터의 구조  (0) 2023.03.28