운영체제 (CSE30101) - 1. Introduction #5

‍정진철·2022년 9월 18일
0
post-thumbnail

System Call

  • 우리가 사용하는 컴퓨터는 운영체제 없이 운영 불가.
  • 운영체제의 존재 이유는 하드웨어가 중간 관리자의 역할을 수행하는 것을 의미.
  • 관리를 하기 위해선 동작이 필요한데 그것은 OS에 있는 코드가 CPU에 올라가 동작하는 경우도 존재 한다는 의미.
  • CPU 공간 내에서 프로세스 코드가 실현되는 것을 'User Mode'
  • 운영체제가 실행되는 순간? : I/O 요청과 같은 시스템 콜 들어올 때 즉, 운영체제의 권한을 빌리고 싶은 상황.
  • 그러면 운영체제가 요청에 대한 코드를 CPU에 전달.
  • 운영체제 내부적으로 시스템 콜에 대한 코드를 호출 => (Kernel Mode)
  • 따라서 기준점은 점유권이 User 냐 ? Kernel 이냐 ?
  • 이러한 모드를 Dual Mode Operation 이라고함.
  • 프로세스 돌리는 중 파일에서 무언가 읽을 때 (read) trap 발생 -> 운영체제가 시스템 콜 정리 후 Handler 가 read 수행 -> 업무 완료 후 운영체제가 CPU에 올라가 (Interrupt) 완료 상황 전달 -> CPU가 read 를 요청한 파일에게 전달

CPU Proteciton

  • CPU를 보호?
  • 컴퓨터 사용하면서 유투브와 워드 동시에 실행
  • 만일 특정 프로스세스(유투브)가 CPU를 독점하게 되면 공정하지 못함(fairness)
  • 따라서 공정하게 자원을 배분 시켜주는 장치 필요.
  • CPU 내 자기 스스로 Self Interrupt 가능.
  • 일정 주기로 작동 (Timer Interrupt)
  • 운영체제에서 주기 설정 가능
  • 따라서 운영체제가 일정 주기로 CPU 위로 올라감.
  • 운영체제가 Interrupt를 치명적 오류로 취급하거나 프로그램에게 더 많은 시간 줌.

Memory Protection

  • 운영체제에서 실행되고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리 접근을 막는것.
  • CPU MMU 가 모니터링.
  • 잘못된 메모리를 참조하는 상황에서 exception 발생 (interrupt)
  • CPU가 인터룹트에 맞는 핸들링 하는데 잘못된 메모리를 참조하는 프로세스를 kill.

I/O Protection

  • 특정 프로세스가 I/O 디바이스를 점유하는걸 보호하는것도 포함되지만 운영체제를 통해서 I/O 를 쓸 수 있는것도 포함 (운영체제 관리하에 통제됨)
  • 커널모드에서만 작동.
  • I/O는 커널 모드에서만 I/O명령을 내릴 수 있음. 즉 운영체제만 I/O 명령을 내릴 수 있음.

  • 운영체제가 시스템을 컨트롤하는 권한을 획득하는 상황 : bootstrapping , system call (유저모드에서 kernel 모드 변경시) , interruput (명령 내린 i/o작업이 완료)

  • 50년대 부터 트랜지스터 개발.
  • 직접도가 높아짐.
  • 점점 우리가 현재 비슷하게 사용하고 있는 컴퓨터와 비슷해짐.
  • 아직 운영체제의 완성도 있는 모습은 부재한 시기.
  • 시스템 모니터 개념 정도.
  • 따라서 시스템 퍼포먼스 떨어짐.

  • Batch System : OS 부팅시 P1, P2, P3 가 실행될 때 프로세스 소요시간이 제각각일 때 하나의 프로세스가 끝날때까지 다른 프로세스들은 아무것도 못함.( 즉, Interrupt 발생 X)
  • 60년대 중반서부터 트랜지스터 직접도가 올라가 I/C칩 제공 -> CPU 성능 향상.
  • 하지만 Batch system은 너무 비효율적.

  • 멀티프로그래밍 시스템 (인터룹트로 인해 번갈아 가면서 사용가능)
  • Time sharing system( fariness , response 의 성능도 높이는 스타일)
    이 두가지 개념은 60년대~ 80년대.. 현재까지 쓰이는 스타일
    I/O 요청을 수행하는 동안에 P2. P3도 수행가능 ( CPU 이용률이 높아짐)

  • 80년대에 pc개념 들어옴
  • 기능을 축소
  • 스토리지 저렴해지고 효욜성 높아짐
  • I/O 효율성 상승
  • 하드웨어적 기술 발전
  • 80년대이후부터 운영체제의 근본이 녹아들어감 (GUI , internet)…

  • 현재시대의 컴퓨팅 환경
    -> Mainframe system : 전통적 흐름을 타고 오는 모든 컴퓨터 시스템 , Batch system, 멀티프로그래밍, Time-sharing System 모두 포함됨 (OS관점)
    필드개념으로는 고성능고지능을 지향하는 컴퓨터를 일컫음
    ->운영체제학에서는 전통을 따라가는 컴퓨터는 모두다 메인프레임 시스템 프로그램

  • 전통적인 컴퓨터는 크고 무거움
    -> 모바일 컴퓨팅 발전 : 스마트폰
    -> 하지만 크기 자체가 작다보니 자원의 활용도에서 한계 발생.

  • 리얼 타임 임베디드 컴퓨팅 : 실시간 컴퓨팅의 정의: 특정시간 안에 작업을 완료해야하는 시스템
    Ex) 원전,항공기에 들어가는 시스템 (데드라인 안에 임무를 수행해야함)

데드라인이 빡빡한 시스템 : hard real-time 시스템
데드라인이 유연함: 유투브 시스템(동영상 재생)

일반적으로 리얼 타임 시스템은 대체로 임베디드 시스템 특정한 목적으로 설계된 시스템에 많이 반영됨


Peer-to-peer computing

  • 서버 클라이언트 처럼 주종관계가 있는것이 아닌 1:1 통신을 이루는 동등한 위치에서 데이터 주고받음 , 센서 네트워크에 많이 사용됨 , 알아서 로컬 네트워크 구축

Cloud computing

  • 센서 네트워크에서 컴퓨터가 작아지면 작아질수록 사물인터넷 개념 도입
    사물 인터넷: 모든 things에 네트워크 기능 부여 . 모든 things 가 Hyper Connection 돼어 정보를 주고받음.

  • 엄청난 데이터를 활용하고자 하는 욕구 발생 -> 데이터 분석해서 정보형태로 만들어야 존재 의미 발생 -> 연산을 수행해서 의미부여를 해야함 -> 옛날에는 특정영역의 데이터만 처리 했는데 엄청난 데이터를 모아보니 이러한 데이터를 분석해서 유의미한 결과를 만들 수 있다는 기대감에 데이터를 처리해서 정보형태로 만드는것을 “빅데이터” -> 그러나 데이터가 너무 많으니 컴퓨팅 파워가 필요함(연산수행) -> 컴퓨팅 파워를 확보하다보니 비쌈 -> 대체로 게임아닌 프로세스 수행시에는 CPU 메모리를 10프로이내로 사용함 -> 노는 자원이 너무 많음 -> 이것을 모아서 필요할때에만 쓰면 좋겠다라는 생각 -> 이것을 하기 위해서 실제로 만들어진 개념이 가상화 의 개념 -> 가상화 기술을 기반으로 물리적으로 떨어져잇는 하드웨어 자원을 하나의 시스템처럼 한데 모은것이 필요할때에만 할당해줄 수 있는것이 클라우드 컴퓨팅.

Iaas

  • 클라우드 인프라스트럭처 서비스는 확장성이 높고 자동화된 컴퓨팅 리소스를 가상화하여 제공.

Paas

  • 클라우드 플랫폼 서비스는 주로 응용 프로그램을 개발할 때 필요한 플랫폼을 제공.

Saas

  • 클라우드 애플리케이션(소프트웨어) 서비스는 사용자에게 제공되는 소프트웨어를 가상화하여 제공.
  • SaaS는 타사 공급 업체가 관리하는 사용자에게 응용 프로그램을 제공하기 위해 인터넷을 사용.
  • 대부분의 SaaS 애플리케이션 웹 브라우저를 통해 직접 실행되므로 클라이언트 측에서 다운로드나 설치가 필요하지 않음.

< 4차산업 >

클라우드를 만들기위해 남은 자원들을 모두 이용함에도 남는 자원이 많이 남음 (하드웨어)

딥러닝 ,기계학습 개념이 컴퓨팅 자원이 넘치다보니 구현이 가능해짐 (AI)

즉, 4차산업이란, 대량의 데이터 + 남는 컴퓨팅 자원(클라우드) + 인터넷을 한데 모은것(AI)


  • 가상화
    VMM (virtual Machine Manager): 가상화시 하드웨어 위에 또 다른 하드웨어를 가상화 시킬 수 있는 VMM
  • 하이퍼바이저를 통해 자원 분배 -> 하나의 하드웨어 시스템 위에 여러개의 플랫폼 동작 가능 ( in 로컬)

  • JVM(VM Ware) : Java Virtual M achine : 자바는 자바 코드를 가지고 어디서든 실행가능.
  • 윈도우든 리눅스든 맥이든 상관없음 (플랫폼 인디펜던트) –> java코드를 운영체제에 맞게 변환시킴.

profile
WILL is ALL

0개의 댓글