• 운영체제의 동작
    1. 전원이 들어오면 Bootstrap program이 가장 먼저 실행(Boot loader)
    2. kernel 로드 - 커널부분이 한 축을 이룸
    3. system daemons 실행 - 커널 밖에서 시작되는 프로그램
    4. 하드웨어적, 소프트웨어적인 인터럽트들이 반응 - HW는 인터럽트, SW는 트랩 또는 exception
  • Multiprogramming(Batch system)과 Multitasking(timesharing)
    • 멀티프로그램 - kernel내에 있는 job scheduling에 의해 job의 실행 순서와 형태를 잘 조직하여 CPU가 항상 하나의 job(코드와 데이터로 이루어져 있는 실행 단위)을 실행할 수 있도록 해줌
    • 타임쉐어링 - job이 실행중일 때라도 어떤 근거에 기반해 빠르게, 자주 교체해서 실행 -> 시간이 모두 끝나서 교체될 수도, 중간마다 교체될 수도 있음
    • 메모리에 탑제된 프로그램을 프로세스라고 함 - 여러개 준비되어 있으면 CPU 스케쥴링에 의해 해당 프로세스를 선택
    • 메모리를 너무 많이 차지하면 외부로 내보내거나 가져오기도 함(swapping), 가상메모리 사용
  • 운영체제의 모드
    • 커널 모드 - 하드웨어 추상화를 통해 하드웨어 제어기능들을 제한없이 사용(특별한 권한 - 특권) -> 시스템 콜 같은 것들을 실행하기 위해 전환, 끝나고 유저모드로 복귀
    • User 모드 - 시스템에 영향을 주지 않는 일반적인 실행모드
    • 사용자 모드에서 커널 모드로의 전환

  • 프로세스 관리
    • 프로세스 - 실행중에 있는 프로그램을 뜻함(메모리에 로딩된 상태), CPU, 메모리, 데이터 등의 자원 리소스를 가지고 일을 수행
    • 프로세스가 끝나면 자원을 반드시 반환해야 함
    • 프로세스는 다시 더 작은 단위의 쓰레드를 가짐 - 싱글 쓰레드, 멀티 쓰레드 프로세스
    • time sharing 방식을 통해 쓰레드들은 멀티 테스킹을 하게 됨
    • program counter를 이용하여 어디를 실행할지 정함
  • 메모리 관리
    • 메모리에 프로세스가 저장되면 file이라는 형태로 저장이 됨
    • 데이터나 메모리 자체를 저장하기도 함
    • file은 수 만개의 단위로 쪼개서 관리
    • 초창기의 컴퓨터는 하드디스크가 없었으며 플로피 디스크를 사용
    • 최초의 하드디스크는 20MB였고 현재는 테라바이트까지 가짐
  • 데이터 처리 경로

  • 컴퓨터 환경
    • 컴퓨터 -> 웹서버에서 정보를 얻음
    • 모바일 - 스마트폰(IOS, 안드로이드 등)
    • 분산 환경 - 네트워크를 이용하여 시스템을 나누어놓고 사용(동등)
    • 클라이언트 서버환경 - 정보를 주는 서버가 정해져있고 클라이언트들이 받아옴(웹서버, 파일서버)

 

    • Peer-to-Peer 환경 - P2P라고도 함

    • 가상화(Virtualization) - 하나의 운영체제위에 다른 운영체제를 실행하는 환경, 실제 가상화 혹은 에물레이터를 이용하는 방법이 있음
    • 클라우드 환경 - storage를 서비스, 하나의 스토리지만을 사용, 스토리지에서 컴퓨터 환경도 사용가능(SaaS, PaaS, IaaS)

    • 다양한 컴퓨팅요소들

    1. 녹색 - 내가 직접 설치하여 가지고 있다는 의미

    2. 붉은색 - 서비스로 제공받아 사용

    3. IaaS(두 번째) - 하드웨어는 빌려쓰고 어플리케이션은 설치하여 사용(가상환경처럼 보임)

    4. PaaS(세 번째) - 플렛폼을 제공하는 서비스, 자신만의 어플리케이션과 데이터를 가질 수 있고 나머지는 제공하는 것을 사용

    5. SaaS(마지막) - 모든 것들을 빌려쓰는 서비스, 접속만 하면 설치없이 사용 가능 -> ex)메일 시스템

    • 임베디드 시스템 환경
    • 실시간 시스템 환경
      1. 하드 실시간 시스템 - 프로세스 안에 혹은 프로세스 자체가 내가 원하는 시간안에 정확하게 끝나는 것
      2. 소프트 실시간 시스템 - 위와같은 시스템을 가지고는 있으나 꼭 원하는 시간안에 정확하게 끝나지 않아도 됨
    • 오픈 소스 시스템 - LINUX와 같은 시스템
  • kernel data structures

    • 운영체제는 외부 라이브러리를 사용하지 않고 가장 기본적인 형태를 사용함

+ Recent posts