운영체제 #2

김상현·2020년 7월 28일
0

개발상식

목록 보기
6/6

컴퓨터환경은 여러 사람이 동시에 한 컴퓨터를 사용하는 경우가 많다. 그리고 하나의 컴퓨터 내에서 여러 프로그램을 수행하는 것이 일반적이다. 이 때 특정 컴퓨터나 프로그램에서 잘못된 동작으로 인해 다른 프로그램이 영향을 받는다면 이는 매우 위험하다. 이를 위해 이중모드라는 것이 나왔다.

이중모드

  • 이중모드는 아래와 같이 모드를 둘로 나누는 것이다.

    • 사용자 모드
    • 관리자 모드
  • 관리자 모드에서는 특권명령이라는 것을 사용할 수 있다. 사용자 모드에서 특권 명령을 사용하려고 하면 CPU에서 내부 Interrupt를 발생시켜 해당 명령어를 요청한 프로그램을 강제로 종료시킨다.

    • 어플리케이션 실행 중 모드 변화

    1. 컴퓨터 부팅 -> 관리자 모드
    2. 어플리케이션 실행과정 -> 관리자모드
    3. 어플리케이션 실행중 -> 사용자 모드
    4. Interrupt 발생 후 처리 과정 -> 관리자 모드
    5. Interrupt 처리 후 -> 사용자 모드
  • 사용자가 하드웨어의 자원에 접근하는 것은 위험하다. 이런 경우에는 모두 관리자 모드로 운영체제에서 처리하도록 한다.

    • Interrupt 발생 후 처리과정
    1. 하드웨어 Interrupt 발생 후 CPU로 Interrupt 신호 요청(사용자 모드)
    2. CPU에서 모드 플래그를 관리자모드값으로 설정
    3. 해당 Interrupt의 ISR으로 이동
    4. Interrupt 처리
    5. Interrupt 처리 완료 후 CPU의 모드 플래그를 다시 사용자 모드 값으로 설정

하드웨어 보호

  • 사용자 어플리케이션에서 입출력을 사용하려면 운영체제를 통해서 수행해야한다. 여러 프로그램이 동시에 Software Interrupt를 이용하여 입출력을 사용하려고 하면 운영체제 내부에서 순서를 정하여 혼선을 막는다.

    • 여러 입출력 장치의 사용으로 인한 혼선
    • 사용자가 자신의 데이터가 아닌 다른 사용자의 데이터에 입출력을 하는 일을 방지
  • 어플리케이션이 자신의 메모리 영역이 아닌 운영체제나 다른 어플리케이션의 메모리 영역에 침범을 막는다.

    • address bus 중간에 설치된 MMU 하드웨어 칩의 두 개의 레지스트러르 통해 해당 프로그램의 주소 범위를 저장한다.
    • 저장한 범위 내의 주소값만 통과 시키고 범위 밖의 주소값이 MMU에 들어오면 Interrupt를 발생시켜 CPU에 신호를 준다.
    • CPU는 그에 맞는 ISR로 이동하여 해당 프로그램을 강제로 종료시킨다.
  • 하나의 프로그램이 CPU를 독점하게 되는 것을 방지하기 위해 Timer를 두어 일정 시가니 지나면 Timer Interrupt를 발생 시켜 각 프로그램의 CPU 점유 시간을 측정하여 분배되도록 조정한다.

0개의 댓글