System Structure & Program Execution 2️⃣

uuuu.jini·2023년 4월 2일
0

OperatingSystemLecture

목록 보기
3/4
post-thumbnail
  • Trap
    • Exception: 프로그램이 오류를 범한 경우
    • System call: 프로그램이 커널 함수를 호출하는 경우

✅ 동기식 입출력과 비동기식 입출력


동기식 입출력 (synchronous I/O)

  • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
  • 구현 방법 1
    • I/O 가 끝날 때까지 CPU를 낭비시킴
    • 매시점 하나의 I/O 만 일어날 수 있음
  • 구현 방법 2
    • I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
    • I/O 처리를 기자리는 줄에 그 프로그램을 줄 세움
    • 다른 프로그램에게 CPU를 줌
    • ⇒ CPU가 놀지않고 일함 !

비동기식 입출력 (asynchronous I/O)

  • I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에게 즉시 넘어감

두 경우 모두 I/O 의 완료는 인터럽트로 알려줌

✅ DMA (Direct memory Access)


  • 메모리에 접근할 수 있는 장치
  • I/O 장치는 다양하고, 자주 interrupt가 발생하여 CPU의 작업을 방해할 수 있다. ⇒ CPU가 인터럽트를 너무 많이 당함 ⇒ 오버헤드 상승으로 효율적 동작을 못함
  • 메모리 접근을 DMA에게 수행시킴 ⇒ 데이터가 쌓이면 해당 데이터들을 메모리로 복사를 한 후 CPU에게 인터럽트를 발생시킴 ⇒ 인터럽트 빈도가 하락한다. (효율상승)
  • 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
  • CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 bloc k단위로 직접 전송
  • 바이트 단위가 아닌 block단위로 인터럽트 발생

✅ 서로 다른 입출력 명령어


  • I/O 를 수행하는 special instruction 에 의해
    • 메모리 접근 인스트럭션 따로 있음
  • memory Mapped I/O에 의해
    • 메모리 접근 instruction이 따로 있지 않음

✅ 저장장치 계층 구조


  • Speed, Cost, Volatitlity
  • 위로 갈수록 빠르고 용량이 적고 비용이 비싸다.
  • 캐싱: copying information into faster storage system.
    • 아래쪽과 위쪽의 속도가 다르다.

✅ 프로그램의 실행


프로그램은 파일 형태로 파일시스템에 저장된 후 메모리에 올라가서 프로세스가 된다.

  • 가상 메모리 : 어떤 프로그램 실행 시 메모리 공간이 생긴다. (stack, code, data)
  • 주소 변환을 통해 물리 메모리로 적재 후 실행
  • 커널은 항상 상주해 있음
  • 물리메모리에 모든 프로세스의 메모리가 적재된 것이 아닌 그때그때 필요한 메모리만 적재한다. (당장 필요한 것만 ⇒ 메모리 낭비 방지)
  • 가상 메모리 : 가상으로 존재하는 메모리이다. 실제로는 연속적으로 할당되어 있지 않다.
  • 가상 주소 ⇒ 물리 주소 : 주소 변환

✅ 커널 주소 공간의 내용


  • code
    • 시스템 콜, 인터럽트 처리 코드
    • 자원관리를 위한 코드
    • 편리한 서비스 제공을 위한 코드
  • data
    • PCB, CPU, mem, disk
    • 운영체제가 사용하는 여러 자료구조들이 있음
  • stack
    • 각 프로세스 별 커널 스택

✅ 사용자 프로그램이 사용하는 함수


  • 사용자 정의 함수: 자신의 프로그램에서 정의한 함수
  • 라이브러리 함수: 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수, 자신의 프로그램의 실행 파일에 포함되어 있다.
  • 커널 함수: 운영체제 프로그램의 함수(커널함수의 호출 = 시스템콜)
profile
멋쟁이 토마토

0개의 댓글