반응형
<운영체제 TIL 목록>
1. 운영체제란? 목적? 분류?
2. 인터럽트란? 컴퓨터 시스템 동작원리로 알아보자.
3. 하드웨어, 메모리 및 메모리 보안 방법?
4. 프로그램의 구조, 실행 시 작동 과정?
5. 프로세스란? 6가지 상태? PCB?
6. 스레드, 멀티스레드란? 프로세스와의 차이?
7. CPU 스케줄링?
8. ''업데이트 예정''
1. 하드웨어 보안 방법?
- 요약: cpu의 모드 비트를 활용하여 하드웨어 보안을 할 수 있다.
- 환경: 현대 컴퓨터는 대부분 다중 프로그래밍 방식으로 cpu와 메모리를 활용한다.
- 문제: 다중 프로그래밍 시, 한 프로그램이 다른 프로그램의 메모리에 접근이 일어나 프로그램간 충돌이 일어날 수 있다.
- 해결 방식: 컴퓨터 프로세서(cpu)는 커널 모드와 사용자 모드를 지원한다. 사용자 모드에서는 시스템 보안과 관련 없는 명령만 수행할 수 있으며 해당 명령들을 일반 명령(메모리에서 자료를 읽어와 cpu에서 계산 후 결과를 메모리에 쓰는 일련의 명령, 프로글매이 직접 수행할 수 있는 명령)이라고 부른다. cpu가 사용자 프로그램에 의해 실행되는 중에는 모드 비트가 1이 되어 사용자 모드로 변한다. 이 상태에선 코드 실행에 제약이 생기는 구조다. 반대로 운영체제가 cpu의 실행 권한을 가질 때는 모드 비트가 0인 상태이며 시스템 보안과 관련된 코드(특권 명령: 보안이 필요한 명령으로 입출력 장치, 타이머 등 각종 장치에 접근하는 명령)를 포함하여 모든 코드를 실행할 수 있다.
- But?: 사용자 프로그램 Instruction에 보안 관련 코드가 있으면 상관 없지 않나? 의문을 품을 수 있다. 하지만 cpu는 명령을 수행하기 전에 해당 명령이 특권 명령인지, 모드 비트가 몇인지 확인하며 실행하기 때문에 문제 상황은 발생하지 않는다.
- 정리:
- cpu는 사용자 프로그램을 실행중일 때는 모드비트가 1이 되어 사용자 모드로 실행.
- 시스템 콜 혹은 예외 상황이 발생 시 인터럽트 라인 설정/모드비트 0/cpu 제어권 to 커널/인터럽트 벡터/인터럽트 루틴(핸들러)를 거쳐 특권 명령을 수행.
- 프로그램에게 cpu 제어권을 넘겨줄 때 모드비트 1로 설정.
2. 메모리 보안 방법?
- 요약: 레지스터를 이용하여 사용자 프로그램이 접근할 수 있는 프로그램인지 확인한다.
- 환경: 현대 컴퓨터들은 다중 프로그래밍 방식을 이용한다. 현재 실행되는 프로그램은 하나일지라도 메모리에는 많은 프로그램들이 올라가있다.
- 문제: 일반 명령이 다른 사용자 프로그램 메모리에 접근할 수 있다. 사용자 모드에서 메모리에 접근하는 것은 지극히 당연한 일이기 때문이다. 예를들어 c언어에서 포인터를 잘못 활용하여 다른 프로그램 혹은 커널의 메모리에 접근할 수 있다. 해당 문제가 일어나면 불법적인 메모리 접근으로 인해 예외상황이라는 소프트웨어 인터럽트가 발생한다. 커널은 cpu를 넘겨 받아 예외상황을 발생시킨 프로그램을 강제 종료 시킨다.
- 해결 방식: cpu가 Instruction을 실행 시, 요구되는 메모리 접근이 합법적인지 체크함으로써 메모리를 보호할 수 있다. 이때 사용되는 레지스터는 기준 레지스터와 한계 레지스터다. 기준 레지스터는 어떤 프로그램이 실행될 때 합법적으로 실행될 수 있는 메모리의 가장 작은 주소, 한계 레지스터는 기준 레지스터 부터 접근할 수 있는 메모리 범위를 의미한다. 이렇게 cpu는 기준&한계 레지스터를 활용하며 Instruction을 실행하기 때문에 타 프로그램 or 커널의 메모리에 사용자 모드에서 접근할 수 없다. 이때 기준 레지스터와 한계 레지스터 설정 또한 시스템 보안에 중요한 요소이기 때문에, 둘을 설정하는 것은 특권 명령에 해당한다.
- But?: 위에서 이야기한 경우는 사용자 프로그램이 메모리 위에 연속적으로 위치한 특별한 or 단순한 경우에 불가하다. 프로그램의 가상 메모리가 페이징되어 관리되는 상황에서는 다른 하드웨어 자원을 이용하여 메모리를 관리한다.(추후 업데이트 예정)
3. CPU 보호 방법?
- 요약: Timer 하드웨어를 활용하여 CPU 독점을 막을 수 있다.
- 환경: 다중 프로그래밍 시스템
- 문제: 프로그램 하나가 CPU 독점하여 잡고 놓지 않을 수 있다. 이로 인해 UX가 저하된다.
- 해결 방안: Timer 하드웨어가 설정된 일정 시간이 지나면 Timer 인터럽트를 설정하여 cpu를 프로그램에게서 뺏어지게 만든다. 이때 타이머를 설정하는 명령은 Load timer이며 시스템 보안과 관련되기 때문에 특권명령에 해당된다.
반응형
'운영체제(OS)' 카테고리의 다른 글
[운영체제] 6. 프로세스란? 5 or 6가지 상태? 스케줄러? (0) | 2022.02.20 |
---|---|
[운영체제] 5. 인터럽트, 문맥 교환(컨텍스트 스위칭), PCB 정의와 차이? (0) | 2022.02.19 |
[운영체제] 4. 프로그램의 구조, 실행 과정? Easy with TMI (0) | 2022.02.18 |
[운영체제] 2. 인터럽트란? 컴퓨터 시스템 동작원리로 알아보자 Easy with TMI (0) | 2022.02.15 |
[운영체제] 1. 운영체제란? 목적? 분류? Easy with TMI (0) | 2022.02.15 |