운영체제 강의 2주차

YuJe·2022년 6월 29일
0

운영체제 스터디

목록 보기
1/2

*반효경 교수님의 운영체제 강의 영상을 기반으로 작성되었습니다

🪄 컴퓨터 시스템 구조


1) I/O Device : 운영체제가 제어하는 입출력 장치
→ Disk(보조 기억장치) : Input/Output device의 역할을 동시에 수행하는 장치
→ Device Controller : 장치를 전담하여 작은 CPU 역할
↳ device와 local buffer 간에 데이터를 옮김
↳ 처리가 끝나면 CPU에게 interrupt(전기신호)를 보냄
→ Local Buffer : Device Controller의 작업 공간

2) CPU : 매 clock마다사용자 메모리의 명령어를 실행
→ 정확히는 PC(Program Counter)에 저장된 위치의 명령어를 실행
→ 다음 명령어 실행 전 하는 일 : Interrupt 확인, 만약 Interrupt가 들어오면 작업을 중단하고 CPU의 제어권을 운영체제에게 넘겨준다
→ Modebit : 사용자 프로그램이 CPU를 가질 때는 Usermode(1)로, 운영체제가 CPU를 가질 때는 Kernelmode(0)으로 저장된다

사용자 프로그램이 I/O를 요청할 때는 시스템 콜 호출

  • 사용자 프로그램이 운영체제에게 서비스를 요청하면 CPU의 interrupt line이 세팅
  • inturrept line이 세팅되면 trap이 발생되어 CPU제어권이 운영체제로 넘어감

    Trap : Software Interrupt
    1. Exception : division by zero 등
    2. System call : 운영체제의 커널 영역의 함수 호출
    운영체제는 interrupt의 구동으로 interrupt가 발생하면 CPU의 PC에 interrupt를 핸들링하는 함수의 주소가 저장되어 바로 실행할 수 있도록 함

  • 운영체제가 CPU제어를 독점하는 상황을 막기 위해 timer가 동작
  • timer : 정해진 시간이 지나면 interrupt를 발생시키는 장치
    ↳ 사용자 프로그램에 무한루프에 갇히거나 운영체제가 CPU를 독점하는 상황을 막기 위한 장치
    ↳ 프로그램 실행 전 운영체제가 timer를 세팅하고 일정 시간이 지나면 interrupt를 발생시킴

3) (Main)Memory : CPU가 직접 접근하는 유일한 저장장치
↳ 보조 기억장치 : 비휘발성 저장장치로 Disk가 이에 해당됨
↳ Caching 기법 : cpu가 처리 속도가 너무 빠른데 비해 메인메모리 등의 저장장치는 속도가 느리다. 이를 개선하기 위해 더 빠른 저장장치(cache, register 등)에 미리 복사하여 속도차를 줄이도록 한다. 만약 더 빠른 저장장치에 데이터가 있는 경우 바로 사용되기 때문에 성능을 향상시킬 수 있다.
↳ Main memory, Cache, Registers는 CPU에서 직접 접근할 수 있음

4) DMA(Direct Memory Access) : 메모리를 접근할 수 있는 장치
→ Device Controller의 local buffer의 내용이 메모리에 올라올 때 CPU가 개입하지 않는데, 이때 DMA가 CPU대신 이 역할을 수행
→ local buffer의 내용을 memory로 복사하고 일정 크기만큼 채워지면 CPU에 interrupt를 보냄

🪄 동기식, 비동기식 I/O

1) 동기식(Synchronous) : I/O를 요청하여 작업이 완료된 후에 CPU가 사용자 프로그램을 실행

2) 비동기식(Asynchronous) : I/O를 요청 후 즉시 CPU가 사용자 프로그램을 실행
→ I/O 작업의 완료는 interrupt로 알게 됨

🪄 프로그램 실행


1) 메모리 load : 프로그램이 File system(Disk)에 실행파일로 저장되고 메모리에 올라가면 프로세스가 되어 실행됨

커널 영역(운영체제)은 메모리에 항상 상주

커널 주소 공간의 구성
1. stack : 함수의 영역으로 사용자 프로그램마다 커널 스택을 갖게 (추후 추가 설명)
2. data : 실행중인 프로세스의 정보(PCB), CPU, memory, disk
3. code : 시스템 콜, 인터럽트, 자원 관리, 기타 서비스

2) Physical memory : 물리적 메모리 공간에 올라와야 프로그램이 실행됨
↳ 사용자 프로그램(프로세스 A,B)의 Address Space 전부를 메모리에 올리면 공간이 낭비될 수 있으므로 당장 필요한 부분만(예를들면 함수 하나) 올려 놓음
↳ 사용하지 않게 되면 Swap area(메모리의 연장 공간)에 내려 놓음
↳ 주소 변환(Address translation)을 거치는데 이는 하드웨어의 지원을 받음

3) virtual(logical) memory : 프로그램을 실행시키면 독자적인 메모리 저장 공간이 생성됨
연속적으로 할당된 것이 아니라, 어떤 부분은 physical memory에 다른 부분은 swap area에 분리됨
↳ stack : 지역변수를 위해 할당된 공간, 실행중에 유동적으로 용량이 변화
↳ data : 전역 변수를 위한 공간, 크기가 고정됨
↳ code : CPU가 실행할 기계어 코드가 저장된 공간

🪄 모든 프로그램은 함수 형태이다

1) 사용자 정의 함수
2) 실행파일에 포함된 라이브러리 함수
↳ 사용자 정의 함수와 라이브러리 함수는 프로세스의 주소공간의 code영역에 포함됨
3) 커널 함수
↳ 커널의 주소 공간의 code영역에 포함됨

profile
🥔

0개의 댓글