본문 바로가기
Computer Architecture

컴퓨터 시스템 개론 : 3장 : 운영체제

by 12312121 2024. 4. 26.

데이터 저장과 조작에 대해 지금까지 살펴봤는데 조작 SW인 운영체제에 대해서 살펴보곘다.

운영체제는 사용자에게 편의성, 효율성, 제어기능 향상을 제공하는 프로그램이다.

하드웨어 자원을 효율적으로 관리하고 새로운 기능을 추가하기 쉽게하고 응용 프로그램을 쉽게 사용할 수 있게 해

 

다음과 같은 순서로 설명할게

 


1. 발전과정

2. 구조

3. 컴퓨터의 활동 조정

4. 프로세스 우선순위 처리

5. 보안


발전 과정은 다음과 같다.

1940년대에는 운영체제가 없었고 그냥 기계어를 순서대로 처리했다. 이를 단순 순차 처리라고 한다.

 

1950년대에는 일괄 처리 시스템이 생겼다. 할 작업을 모았다가 일괄 처리하는 것이다.

 

1960년대에는 다양한 시스템이 나왔다. 총 4가지인데 먼저 다중프로그래밍시스템, 다중처리시스템, 시분할시스템, 실시간 처리 시스템이다. 줄여서 다다실시다.

다중프로그래밍 시스템은 여러 작업을 한 CPU로 동시에 처리하는 시스템이다. 다중처리시스템은 여러 CPU로 여러 작업을 동시에 처리하는 시스템이다. 시분할 시스템은 여러 프로세스에게 시간슬롯을 부여하고 임의의 시간만큼 돌아가면서 한번씩 프로세스의 작업을 처리하는 시스템이다. 마지막으로 실시간 처리시스템은 CPU와 특정 장치 사이에 별도의 통로를 두어서 그 특정 장치의 작업이 끝나자마자 작업 결과를 전달받는 것이다.

 

1970년대 초반에는 1960년대의 시스템을 재활용하는게 대부분이였다. 먼저 다중 모드 시스템은 여러 모드를 돌아가면서

 

1960년대에 나왔던 시스템들을 한 시스템에서 다 쓸 수 있게하는 거고 범용 시스템은 모드 없이 그냥 다 쓸 수 있게 것이다.

 

1970년대 중반에는 분산 처리 시스템이 나왔다. 이것은 여러 컴퓨터가 한 작업을 처리할 수 있게 하는 시스템이다.

 

이를 위해 1970년대 초반에는 TCP/IP 통신 표준이 활성화 되었다. 이것은 네트워크 통신 규약이다.

그리고 이때 해킹을 방지하기 위해서 네트워크와 보안이 같이 발전되었다.

그리고 컴퓨터마다 하드웨어가 다를 수도 있으니, 하드웨어가 바뀌어도 동일한 시스템 작업을 할 수 있도록 시스템의 독립성이 보장되게 만들어졌었다.

 

그리고 1970년대에는 펌웨어라는 개념이 등장헀다. 하드웨어에 운영체제가 딸려 나오는 것이다.

그리고 분산 처리 시스템을 잘 활용하기 위해 데이터베이스와 응용 프로그램이 활용되었다.

 

1970년대에는 이전의 것을 활용함과 동시에 병렬과 분산 게산 위주의 운영체제가 자리 잡았다.

월드와이드웹이 등장함에 따라 필수 적인 것이였다.

또한 GUI와 개인용 & 서버용 운영체제가 보편화 되었다.

충분히 운영체제가 발달되어서 그런것이였다.

 

2000년대 이후에는 모바일 운영체제와 임베디드 운영체제가 나오기까지 했다.

임베디드 운영체제란 기존 펌웨어 뿐만 아니라 일반 응용 프로그램까지 하드웨어에 장착되어서 나올 수 있는 것이다.

가상화와 클라우드 컴퓨팅 또한 나왔다. 가상화를 하나의 하드웨어 자원을 여러 운영체제가 사용할 수 있게 하는 것이다.

클라우드 컴퓨팅이란 인터넷을 통해서 다양한 사용자에게 컴퓨터 자원과 SW를 서비스 형태로 제공하는 것이다.

 

이렇게 운영체제가 그동안 많이 발전 해왔는데 중요한 것 4가지만 꼽으라면 아래와 같다.

프로세스, 메모리 관리, 스케줄링 및 자원관리, 정보보호 및 보안이다.

프로세스란 여러 소스코드를 프로세스라는 단위로 처리할 수 있는 것이며, 메모리와 CPU를 효율적으로 관리하는 것이다.

그리고 마지막으로 보안까지 챙기는 것이다.


1. 발전과정

2. 구조

3. 컴퓨터의 활동 조정

4. 프로세스 우선순위 처리

5. 보안


  • 역할
  • 위치
  • 구조

OS의 역할은 5가지다. 

  • 프로그램 개발/실행
  • I/O 장치 접근
  • 시스템/파일 접근 제어
  • 에러 발견 및 응답
  • 어카운팅

어카운팅이란 하드웨어의 사용을 추적 및 기록하는 것을 의미한다.

 

OS의 위치는 아래에서 위로 2번째, 위에서 아래로 3번째이다.

OS는 유틸리티컴퓨터 하드웨어 사이에 위치한다.

유틸리티와 응용 프로그램 사이에는 API

유틸리티와 운영체제 사이에는 ABI

컴퓨터 하드웨어와 운영체제 사이에는 ISA가 있다.

각각 아래의 약자를 가진다.

Application Programmer Interface

Application Binary Interface

Instruction Set Architecture

 

API는 소스코드로 이뤄진 SW와 라이브러리 혹은 운영체제 사이의 매개체다.

또한, 함수와 함수에 인수를 전달하는 순서를 저장한다.

ABI는 컴파일된 SW와 라이브러리 혹은 운영체제 사이의 매개체다.

또한, 코드를 저장하는 방식과 함수에 인수를 전달하는 방식을 저장한다.

ISA는 운영체제와 하드웨어 사이의 매개체다.

 

OS의 구조는 아래와 같다.

사용자 혹은 프로그램으로부터 명령어를 전달 받고 

 

특이 사항으론 장치마다 전담 드라이버가 존재한다는 것이다.

커널은 두가지 인터페이스를 지녔다.

위로는 시스템 호출.

내부에는 시스템 호출 핸들러.

아래로는 인터럽트.

인터럽트는 하드웨어와의 매개체이고 ISR ( interrupt Service Routine)으로 인터럽트가 처리된다.

인터럽트란 하드웨어의 예외상황에 대한 보고 메세지다.

시스템 호출은 응용 프로그램과의 매개체다.

시스템 호출은 시스템 호출 라이브러리와 표준 라이브러리 두가지를 가지고 있다.

사용자가 작성한 코드로부터 호출을 받고 호출을 받으면 커널 안의 시스템 호출 핸들러에게 신호를 보낸다.

ㅇㅡ

이제 발전, 구조, 기능에서 

OS의 기능을 더 자세히 설명하자면, 보안, 네트워크, 장치 관리, 프로세스, 메모리, 파일 시스템, 기타 관리가 있다.

 

여기서 특히, 입출력 장치를 관리할땐 각 장치의 속도를 잘 고려해야 한다.

속도별로 입출력 장치들을 나열해 보겠다.

기가비트 이더넷, 디스플레이, 하드디스크, 이더넷, 광디스크, 스캐너, 프린터, 플로피디스크, 모뎀, 마우스, 키보드

줄여서 기디하이광스프플모마키다.

 

OS 발전, 구조, 기능에서

장치 (입출력),  파일 시스템, 메모리, 프로세스, 보안 관리 기능을 차례대로 살펴보겠다.

 

여기서 입출력 관리 기능에 대해서 알아보겠다.

OS는 버퍼링, 디스크 스케줄링으로 효율성을 향상 시키고 계층적 모듈 설계로 일관된 인터페이스를 제공한다.

 

그리고 OS의 입출력 관리 타이밍을 알아보자면 아래와 같다.

 

논리적 주변장치로부터는 프로세스로부터 논리적 명령을 받고 그것을 장치 명령으로 바꾸고 그 명령들을 스케줄링 및 제어 하다가 진짜 하드웨어에게 명령을 보낸다.

통신 포트에서는 프로세스 로부터 TCP/IP 형태의 통신 구조로부터 명령을 받고 그것을 장치에 대한 명령으로 바꾸고 (입출력 같은) 그것을 스케줄링/제어하다가 하드웨어에게 명령을 보낸다.

파일 시스템에서는 사용자 프로세스에서 디렉 토리 관리 명령을 받고 그것을 파일 시스템 관점에서 해석하고, (그전에 파일 시스템 관점이란 파일의 논리적구조, 논리적 명령, 접근 권한 등등을 종합적으로 분석 및 해석하는 것을 의미한다) 물리적 구성에 따라 장치 명령으로 바꾸고 스케줄링 및 제어하다가 하드웨어에게 명령을 보내는 것을 의미한다.

 

장치 관리(입출력 관리),  파일 시스템 관리, 메모리 관리, 프로세스 관리, 보안 관리

그리고 마지막으로 본, 그리고 OS의 기능인 파일 시스템에 대해서 알아보곘다.

파일 시스템에는 파일 관리자 라는 것이 존재한다. 먼저, 파일이란 사용자 관점에서의 사용자에게 할당되는 저장장치의 가장 작은 할당량 단위이다. 사용자가 생성한 데이터 집합이기도 하다. 파일로 사용자에게 그리고 응용프로그램에게 편리한 내부 구조를 제공한다. OS가 저장장치의 물리적 특성을 추상화 및 논리적 단위로 정의한 것이기도 하다.

 

그 다음에, 운영체제마다 파일시스템의 종류가 다른 특징이 있다.

먼저 윈도우에서는 FAT32, NTFS를 사용한다.

Linux에서는 Ext2~Ext4

맥에서는 HFS

솔라리스에서는 ZFS이다.

파일 시스템의 정의에 대해서 살펴보자면, 데이터를 쉽게 탐색 및 접근할 수 있도록 저장 장치에 저장하는 체계다.

 

파일관리자의 기능도 설명하자면 다음과 같다.

파일의 정보 유지, 파일의 버퍼링과 블록킹이다.

버퍼링은 CPU와 입출력 장치의 속도차이를 임시저장공간으로 보완하는 기능이다.

블록킹이란 파일의 내용을 묶어서 전달하게 하는 기법이다. 보조기억장치에 대한 참조 횟수를 줄여서 효율성을 개선한다.

 

또한, 디렉토리라는 것도 있다. 이것은 지금까지 설명한 파일에 대한 정보를 포함하고 있는 파일이다.

그리고 아래와 같이 디렉토리를 계층적 구조로 만들 수 있다.

맨 위에 있는 것은 루트 디렉토리이고 그 밑에 있는 것은 서브 디렉토리이다.

 

장치 (입출력),  파일 시스템, 메모리, 프로세스, 보안 관리 기능 중 메모리정확히는 메모리 관리자를 살펴보곘다.

메모리 관리자는 메모리의 관리자로써 다섯가지 기능을 가진다.

재배치, 공유, 보호, 논리적 구성, 물리적 구성이다.

메모리의 프로그램을 메모리의 다른 주소로 이동 시킬 수 있어야한다.

그리고 다른 프로그램이 수행되는 도중 다른 프로그램으로부터 간섭 받지 않게 해야한다.

그리고 여러 프로그램이 메모리의 특정 영역에 대한 접근을 허가 할 수 있게 해야한다.

논리적 구성은 논리적 프로그램 구성 관점으로 메모리를 처리해야하는 것이고,

물리적 구성은 메모리의 정보 흐름이 프로그래머에게 공개되야 한다는 것이다.

 

그리고 물리적 구성에서 데이터의 흐름은 보통 다음과 같다.

레지스터와 캐시는 CPU안에 있어서 그 사이의 데이터 교환은 CPU처리 단위 전송이라고 볼 수 있다.

캐시와 메모리 사이는 효율성을 위해 작은 블록 단위로 전송된다.

보조 기억장치는 느리지만 메모리 비용이 적기 때문에 더 큰 블록으로 전송한다.

그리고 주기억장치~레지스터의 데이터는 바로 직접 참조가능하고 보조는 예외로 주기억장치로 데이터를 옮겨야 참고가 가능하다.

또한, 참고로 32비트 운영체제에선 주기억장치로 2^32 = 4기가까지만 인식 할 수 있다.

여기서 사용자 공간은 윈도우 기준 2기가, 커널은 2기가다. 리눅스에선 3기가, 1기가다.

반면 64비트는 2^64이기 떄문에 16엑사바이트만큼의 크기를 가질 수 있다.

 

 

댓글