본문 바로가기
책/혼공 컴퓨터구조+운영체제

운영체제 - 운영체제(커널 영역, 사용자 영역)

by 코딩하는 돼징 2023. 12. 7.
반응형

컴퓨터 부품들은 전기만 공급하면 알아서 작동하는 것이 아니다. 운영체제란 특별한 프로그램의 지휘하에 작동한다. 운영체제는 01~08장까지 배운 컴퓨터 부품들을 관리하고 여러분이 개발한 프로그램이 올바르게 실행하도록 돕는다.

 

모든 프로그램은 실행을 위해 자원(Resource)을 필요로 한다.

이때 프로그램 실행에 마땅히 필요한 요소들을 가리켜 시스템 자원 혹은 줄여서 자원이라고 한다. 지금까지 학습한 컴퓨터의 네 가지 핵심 부품도 포함된다. 즉 모든 프로그램은 실행되기 위해 반드시 자원이 필요하다.


운영체제(Operation System)란?

컴퓨터 시스템의 핵심 부분으로 컴퓨터의 자원을 효율적으로 관리하고 응용 프로그램이 원할하게 실행되도록 지원하는 특별한 프로그램이다. 개발자가 개발한 프로그램이나 사용하는 모든 응용 프로그램은 운영체제의 지원하에 실행된다.

 

운영체제는 실행할 프로그램이 필요로 하는 자원을 할당하고 이를 효율적으로 관리한다. 이 자원은 CPU,메모리,입출력 장치, 저장 장치 등과 같은 컴퓨터의 핵심 부품들을 포함하다. 운영체제는 이러한 자원을 효율적으로 조절하여 여러 응용 프로그램이 동시에 실행될 수 있도록 한다.

 

응용 프로그램

사용자가 특정 목적을 위해 사용하는 일반적인 프로그램이다. 일상적으로 사용하는 워드 프로세서, 인터넷 브라우저, 메모장, 게임등과 같은 프로그램이 모두 응용프로그램이다.


운영체제는 크게 커널영역과 사용자 영역으로 나뉜다.

커널 영역(kernel space)

항상 컴퓨터가 부팅될 때 메모리 내에 따로 적재되어 실행되는 공간이다. 커널은 운영체제의 핵심 부분으로 시스템의 핵심 기능과 자원을 관리한다.

사용자 영역(user space)

커널 영역을 제외한 나머지 영역으로 사용자가 이용하는 응용 프로그램이 적재되는 영역을 사용자 영역이라고 한다.

 

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

즉 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행되도록 돕는다.


운영체제 역할

01 운영체제의 메모리 관리

운영체제는 실행할 프로그램을 메모리에 적재하고 실행 중인 프로그램이 더 이상 필요하지 않을 때 메모리에서 삭제하여 메모리 자원을 지속적으로 관리한다. 이를 통해 시스템의 메모리를 효율적으로 활용할 수 있다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


02 운영체제의 CPU관리

여러 응용 프로그램들이 실행되려면 CPU가 필요하고 여러 프로그램이 동시에 CPU를 사용하려 할 때 어떤 프로그램이 CPU를 사용하지 결정한느 것은 운영체제의 역할이다. 공정한 자원 분배를 위해 운영체제는 CPU자원을 최대한 공정하게 여러 프로그램에 할당한다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


03 운영체제의 입출력 장치 관리

여러 응용 프로그램이 입출력 장치를 공유해야 할 때 운영체제는 충돌을 방지하기 위해 적절한 규칙을 설정한다. 예를 들어 두 개의 프로그램이 동시에 같은 프린터를 사용하려 할 때 운영체제는 이를 방지하고 하나의 프로그램이 프린터를 사용하는 동안 다른 프로그램은 기다리도록 한다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

이처럼 운영체제는 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고 응용 프로그램이 올바르게 실행되도록 관리하는 역할을 맡는다.


운영체제는 흔히 정부에 비유된다. 한 나라의 정부는 땅, 인력, 돈 등 국내자원을 효율적으로 배분하고 국민들이 지켜야 할 규칙을 만들어 나라 전체를 관리한다. 운영체제는 응용 프로그램에 자원을 효율적으로 배분하고 실행할 프로그램들이 지켜야할 규칙을 만들어 컴퓨터 시스템 전체를 관리한다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


만약 운영체제가 없다면?

만약 운영체제 도움 없이 프로그래머가 개발을 한다고 하면 하드웨얼르 직접 접근하고 조작하는 코드를 개발자가 직접 하나하나 일일이 만들어야 된다는 말과 같다.

 

1과2를 더한 결과를 모니터에 출력하는 간단한 프로그램을 생각해보자

1 ) 프로그램 적재 코드 작성: 프로그램을 메모리에 적재하고 시작하기 위한 저수준 코드를 작성
2) 1과 2 더하기 코드 작성: CPU에게 두 수를 더하도록 하는 코드를 작성해야 한다. 이는 CPU의 레지스터를 직접 조작하는 코드이다.
3) 결과 출력 코드 작성: 모니터에 결과를 출력하기 위한 저수준 코드를 작성해야 한.

이러한 일련의 작업을 모두 직접 처리하는 것은 매우 복잡하고 실수하기 쉽다. 그러나 운영체제를 사용하면 이러한 기능들이 미리 구현되어 있으며 프로그래머는 이러한 저수준 세부사항을 신경쓰지 않고도 높은 수준에서 프로그램을 작성할 수 있다.


운영체제를 알아야 하는 이유

프로그래머가 문제를 해결하고 프로그램을 효율적으로 개발하기 위해 필요한 정보를 제공하기 때문이다. 운영체제는 프로그램을 위한 프로그램으로 하드웨어와 소프트웨어 간의 중간역할을 수행한다.

01 하드웨어와의 인터페이스

운영체제는 하드웨어와 소프트웨어 간의 인터페이스 역할을 한다. 개발자는 어떤 하드웨어가 사용되는지 하드웨어의 성능과 한계는 무엇인지에 대한 정보를 알아야한다. 이를 통해 개발자는 자신의 프로그램을 최적의 성능으로 동작하도록 조정할 수 있다.

02 오류 해결

프로그래머가 개발한 프로그램이나 코드가 잘못되었거나 오류가 발생했을 때 운영체제는 오류 메시지를 통해 문제의 원인을 알려준다. 개발자는 운영체제가 전달하는 정보를 기반으로 문제를 해결하고 코드를 수정할 수 있다.

03 컴퓨터 시스템 이해

운영체제를 이해하면 컴퓨터 시스템이 어떻게 작동하는지 프로세스가 어떻게 스케줄되고 메모리가 어떻게 관리되는지 등에 대해 알 수 있다.

 

 

 

 

 

참고 :  본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard 

 

 

 

반응형

댓글