[OS] OS와 Dual Mode

JUJU·2024년 3월 14일
0

OS

목록 보기
2/12

✏️ 운영체제를 이해하기 위한 사전지식

■ Processes

프로세스는 트리의 구조로 생성된다.

  • 최초의 프로세스는 부팅할 때 실행된다.
  • 최초의 프로세스는 모든 프로세스의 부모이다.

ex) 그래픽 쉘에서 크롬을 클릭
➜ 쉘 프로그램의 자식 프로세스로 크롬 프로세스 실행
➜ 크롬에서 다른 프로그램 실행
➜ 크롬의 자식 프로세스로 실행됨


■ Files

파일은 트리 구조로 구성된다.
디렉토리 또한 파일이다.

디렉토리와 파일은 구조가 똑같다.
디렉토리에는 하위 파일들의 정보가 테이블 형태로 있을 뿐이다.

  • 리눅스에서는 다른 디스크에 존재하는 파일에 입출력하려면, Root 디렉토리 아래에 마운트시켜야 한다.
  • 초기 유닉스에서는 파일을 사용해서 프로세스간 정보를 전송했다. (Inter Process Communication)
    • 프로세스 A가 파이프 파일에 적고 B가 읽어간다

■ System Call

System Call은 사용자 프로세스가 운영 체제의 커널에 서비스를 요청하는 방법 중 하나이다.

프로세스 관리를 위한 System Calls
pid = fork()
pid = waitpid(pid, &statloc, options)
s = execve(name, argv, environp)
exit(status)

메모리 관리를 위한 System Calls
fd = open(file, how)
s = close(fd)
n = read(fd, buffer, nbytes)
n = write(fd, buffer, nbytes)
position = lseek(fd, offset, whence)

System Call과 Interrupt가 헷갈릴 경우


■ Virtual Machine

Virtual Machine이란, 컴퓨터 하나를 그대로 Ammulate한 뒤에 운영체제를 설치하는 것이다.

각각의 가상머신마다 CMS 운영체제를 올리고 사용하게 하면, 다중 사용자 지원할 수 있다.

  • 가상 머신 프로그램을 Hypervisor라고 부른다.
  • 호스트의 OS 위에 직접 설치되는 네이티브 Hypervisor와, 일반 운영체제에서 실행되는 애플리케이션 형태의 호스트형 Hypervisor가 존재한다.

Virtual Machine의 문제점

네이티브 Hypervisor의 경우, Windows, Linux는 User Mode이고 Hypervisor(OS)는 kernel Mode이다.

  • 입출력하려면 interrupt 걸어서 Hypervisor로 점프해야한다.
  • 마치 Windows, Linux 등의 OS가 입출력을 처리한 것 처럼 세팅되어야 한다.



✏️ 운영체제의 구조

■ Monolithic System

가장 초기에 개발된 운영체제 아키텍쳐

  • 운영체제의 모든 구성 요소를 커널에 포함시켰다.
  • 3가지 구성 요소로 나뉜다.
    • 메인 프로그램: 서비스 프로시저를 호출
    • 서비스 프로시저: 시스템 호출을 수행
    • 유틸리티 프로시저: 서비스 프로시저를 지원

■ Layered System

THE 운영체제에서 사용된 아키텍쳐

  • 유사한 기능을 수행하는 요소들을 그룹으로 묶어서 하나의 Layer로 만들었다.
LayerFunction
5사용자 프로그램 Operator
4User programs
3I/O 관리
2Operator-process communication
1Memory & Drum 관리
0Processor allocation & multiprogramming

■ Microkernels

운영체제가 너무 방대하니, 모듈 단위로 쪼개서 관리하는 아키텍쳐

  • 기타 운영체제의 기능은 프로그램으로 만들어서 프로세스로 돌린다.

  • 핵심 기능(interrupt, scheduling, IPC)은 Microkernel로 만든다.

  • 운영체제의 유지 보수가 쉬워진다.
    ex) 운영체제 기능 중에서 파일 시스템만 바꾸고 싶다?
    ➜ 파일 시스템만 바꿔서 다시 실행시키면 된다.


문제점

모든 요청을 메시지로 송수신 해야한다.
∴ 기존 Monolithic에 비해서 성능이 떨어진다.


■ Client-Server Model

분산 운영체제 아키텍쳐

  • 마이크로커널이 발전한 형태이다.

  • 마이크로커널은 하나의 컴퓨터에서 작동하지만, Client Server는 운영체제의 기능을 각각의 컴퓨터에서 작동시킨다.

  • 각 기계마다 제공해주는 운영체제의 서비스가 다르다.

  • 각 컴퓨터는 네트워크로 연결되어 있다.





✏️ Dual Mode

■ User Mode

  • User Program이 실행되는 모드이다.
  • 특권 명령 (Privileged Instruction)을 실행할 수 없다.

특권 명령이란?

I/O 명령
Processor 상태 조정 명령
특권 메모리 영역에 접근하는 명령

  • Interrupt를 사용해서 Kernel Mode로 넘어갈 수 있다.

■ Kernel Mode

  • 특권 명령을 실행할 수 있다.
  • Interrupt Return 명령을 사용해서 User Mode로 돌아갈 수 있다.
profile
개발자 지망생

0개의 댓글

관련 채용 정보