본문으로 바로가기

Operating System

category CS/Computer 2019. 6. 7. 18:07
  • Process/Thread

    CPU는 오직 Memory하고만 이야기할 수 있음

    Process는 ID가 보임

    Thread는 PS 안에서 돌아서 ID가 안보임

  • <Lifecycle (실행파일을 Process화 하는 과정)>

    Create(외부 lib 할당, 가상메모리 끌어와서 )

    Ready(CPU 할당받기 전 준비단계)

    Run(CPU 할당)

    Wait(CPU 뺐김)

    Resume(CPU 다시 할당하면 다시 Ready 상태로 가서 기다림)

    Destroy(할일 다 끝나면)

​ Memory에서 읽는 시간보다 File에서 읽는 시간이 훨씬 오래걸림 (달까지의 거리라고 생각)

  • Deadlock

    만들어지는 조건 : 두개 이상의 task가 두개 이상의 resource를 공유할 때 만들어짐

    (할당과 기다림이 사이클을 이룰 때)

    뮤텍스 : 한 자원을 한번에 한 task만 사용하도록 만든 장치

    (프로세스 버전은 세마포어)

    쓰레드는 뮤텍스를 사용

    • nodejs는 싱글쓰레드여서 데드락 걸릴일이 없지만 java와 python 등에서 나타날 수 있음
  • Resource

    • File

    • I/O

    • Memory

      • Memory Management

        • 남는 메모리 공간을 compress(압축)해서 다른 메모리들을 reloaction해줌

        • 그리고 연속된 공간을 확보한뒤 거기에 로드함

        • 리로케이션은 아주 복잡한 기법이므로 자주 사용하지 않음

  • Virtual Memory

    • 실제 메모리는 2G인데 4G 프로세스를 어떻게 사용하나?

      • 필요한 부분만 그때 그때 메모리에 올려서 사용함

      • 디스크 쓰는 작업은 엄청 비용이 큰데 또 스왑을 계속하니 비용이 정말 큼

  • Managed/Unmanaged Language

    • Unmanaged Lang : malloc(), free()
      • 사용할 부분만 동적으로 메모리를 할당해주고(malloc), 다쓰고 해제해줌(free)
      • 메모리가 풀나면 Log도 안남기고 그냥 죽음
      • Assembly, C, C++
    • Managed : A garage Collected Manage Management
      • Java, C#, Python, Javascript : 명시적으로 메모리 할당을 하지 않아도 자동으로 메모리를 잡아줌
      • Java -> .class -> JVM
        • (주기적으로 가비지 컬렉션을 컴프레션 해서 공간을 확보함.
        • 컴프레션 할때는 안돌아가는게 단점)
      • C# -> .Net에서 돌아감
      • Python -> text.py를 파이썬에 올리면 바로 돌아감
      • Jvascript는 V8엔진에서 돌아감
      • 이것처럼 각 언어는 돌리는 엔진에서 사용되는 현황을 관리하고 있음
  • Linux(Kernel)

    • Background

      • 1bit -> 1진공관에 저장 => 트랜지스터 => IC => ...
      • UNIX 만듬 : 작은 규모의 다중 사용자, 멀티 프로세싱 가능한 PDP(미니 컴퓨터) 만듬
      • C 언어 + UNIX + Socket +.... => 버클리에서 UNIX System 1,2,3,4,5 (Unix System V시스템 파이브) => Posix(portable operating system interface : 이식 가능 운영 체제 인터페이스) API 정의
      • 90년대 초반에 kernel 을 오픈함
      • Kernel : Memory Management, CPU Scheduling, File System...
        • 커널에서 프로그래밍 하려면 컴파일러, 편집기, 링커(라이브러리 링크), 로더(메모리에 올려서 프로세스화 하는 작업) 필요함.
      • GNU : 주요한 소프트웨어를 Free SW 화 함. 대신 소스코드를 공개한다는 조건으로 오픈소스를 쓰게 함. ex : gnu 패키지 화 해서 만든게 우분투, 레드햇
  • Distribution, Package Management

    • Linux 배포판 : Linux Kernel + Open Source S/W
      • S/W를 배포하는 환경이 다름
      • 미국 ) Red Hat -> rpm(Redhat Pakage Management)
        • 커뮤니티 버전이 Cent OS(무료) -> rpm 사용 (서버 기능 특화)
      • 유럽 ) 데비안 -> apt(패키지 관리자) (패키지 관리자가 다르다는 것은 패키지 운영방식이 다르다는 뜻)
        • Ubuntu -> apt-get (데스크탑에서 주로 사용)
      • Mac OS : 버클리 유닉스의 Darwin Kernel 사용
  • Embedded System

    • IoT Device 가 대부분 Embedded System
    • Embedded System :특수목적컴퓨터 (우리 컴퓨터는 General Purpose Computer)
    • MCU( Micro Controller Unit) : CPU, RAM, Flash Memory
    • Real-Time OS : task를 처리하는데 dead line이 주어진 시스템 (ex)미사일 좌표 처리
      • Hard RT : 데드라인 엄격함
      • Soft RT : 영상이나 음악을 들을 때, 영상과 소리의 싱크가 맞아야 되는 정도

'CS > Computer' 카테고리의 다른 글

Video call (feat.WebRTC)  (0) 2021.02.08
Data In Digital  (0) 2019.05.17
프로그램에 관하여  (0) 2019.05.14
DLL (Dynamic Link Library)  (0) 2019.05.07
RPA (Robotic Process Automation)  (0) 2019.04.24