A properly designed OS must ensure that an incorrect (or malicious) program cannot cause other programs to execute incorrectly.
올바르게 설계된 OS는 잘못된(또는 악의적인) 프로그램으로 인해 다른 프로그램이 잘못 실행되지 않도록 해야 합니다.
Dual-mode operation allows OS to protect itself and other system components.
듀얼 모드 작업을 통해 OS는 자체 및 기타 시스템 구성 요소를 보호할 수 있습니다.
Provides ability to distinguish when system is running user code or kernel code.
시스템이 사용자 코드 또는 커널 코드를 실행 중일 때를 구별할 수 있는 기능을 제공
Some instructions designated as privileged, only executable in kernel mode.
일부 명령은 권한로 지정되며 커널 모드에서만 실행
System call changes mode to kernel, return from call resets it to user.
시스템 호출이 커널로 모드를 변경하고 호출에서 반환하면 사용자에게 재설정
+) https://www.geeksforgeeks.org/dual-mode-operations-os/
An error in one program can adversely affect many processes, it might modify data of another program, or also can affect the operating system.
For example, if a process stuck in the infinite loop then this infinite loop could affect the correct operation of other processes.
So to ensure the proper execution of the operating system, there are two modes of operation:
한 프로그램의 오류는 많은 프로세스에 악영향을 미치거나 다른 프로그램의 데이터를 수정하거나 운영 체제에 영향을 줄 수 있습니다. 예를 들어, 프로세스가 무한 루프에 고착되면 이 무한 루프는 다른 프로세스의 올바른 작동에 영향을 미칠 수 있습니다. 따라서 운영 체제의 적절한 실행을 보장하기 위해 두 가지 작동 모드가 있습니다.
When the computer system is run by user applications like creating a text document or using any application program, then the system is in user mode.
When the user application requests for a service from the operating system or an interrupt occurs or system call, then there will be a transition from user to kernel mode to fulfill the requests.
Note: To switch from kernel mode to user mode, the mode bit should be 1.
컴퓨터 시스템이 텍스트 문서를 만들거나 응용 프로그램을 사용하는 것과 같은 사용자 응용 프로그램에 의해 실행되면 시스템은 사용자 모드에 있는 것입니다. 사용자 애플리케이션이 운영체제에 서비스를 요청하거나 인터럽트가 발생하거나 시스템 호출을 할 때, 요청을 이행하기 위해 사용자에서 커널 모드로의 전환이 있을 것이다.
참고: 커널 모드에서 사용자 모드로 전환하려면 모드 비트가 1이어야 합니다.
When the system boots, hardware starts in kernel mode and when the operating system is loaded, it starts user application in user mode.
To provide protection to the hardware, we have privileged instructions which execute only in kernel mode.
If the user attempts to run privileged instruction in user mode then it will treat instruction as illegal and traps to OS.
Some of the privileged instructions are:
Note: To switch from user mode to kernel mode bit should be 0.
시스템이 부팅되면 하드웨어가 커널 모드에서 시작되고 운영 체제가 로드되면 사용자 모드에서 사용자 응용 프로그램이 시작됩니다. 하드웨어를 보호하기 위해 커널 모드에서만 실행되는 권한 있는 명령이 있습니다. 사용자가 사용자 모드에서 권한 있는 명령을 실행하려고 하면 명령이 불법으로 간주되어 OS에 트랩됩니다.
권한 있는 지침 중 일부는 다음과 같습니다.
참고: 사용자 모드에서 커널 모드 비트로 전환하려면 0이어야 합니다.
All I/O instructions are privileged instructions.
모든 I/O 지침은 권한이 있는 지침입니다.
Must provide memory protection at least for the interrupt vector and the interrupt service routines
(i.e. a user program that, as part of its execution, stores a new address in the interrupt vector).
인터럽트 벡터와 인터럽트 서비스 루틴(즉, 실행의 일부로서 인터럽트 벡터에 새 주소를 저장하는 사용자 프로그램)에 대해 적어도 메모리 보호를 제공해야 한다.
In order to have memory protection of a program, use two registers that determine the range of legal addresses a program may access:
프로그램의 메모리 보호를 위해 프로그램이 액세스할 수 있는 법적 주소의 범위를 결정하는 두 개의 레지스터를 사용합니다.
Base register : Specifies the smallest legal physical memory address.
기본 레지스터 : 합법적인 물리적 메모리 주소 중 가장 작은 주소를 지정
Limit register : Specifies the size of the range.
제한 레지스터 : 범위의 크기를 지정
A pair of base and limit registers specifies the logical address space.
기본 레지스터와 제한 레지스터 쌍은 논리 주소 공간을 지정
The base and limit registers can be loaded only by the operating system.
기본 레지스터와 제한 레지스터는 운영 체제에서만 로드
Ex : If the base register holds 300040 and the limit register is 120900, then the program can legally access all addresses from 300040 through 420939 (inclusive).
Ex : 기본 레지스터가 300040이고 제한 레지스터가 120900인 경우 프로그램은 300040에서 420939(포함)까지의 모든 주소에 합법적으로 액세스할 수 있습니다.
Timer interrupts computer after specified period to ensure operating system maintains control.
타이머는 운영 체제가 제어 상태를 유지하도록 지정된 기간 후에 컴퓨터를 중단
Timer commonly used to implement time sharing.
시간 공유를 구현하는 데 일반적으로 사용되는 타이머
Time also used to compute the current time.
현재 시간을 계산하는 데도 사용되는 시간
Load-timer is a privileged instruction.
로드 타이머는 권한이 있는 명령