본문 바로가기
TIL

[TIL] Unix / Linux / 대화형 시분할 시스템 / 커널 / Link

by thegreatjy 2023. 9. 20.
728x90

HW


화면 해상도 (모니터)

  • HD > FUD > QHD > UHD
  • 픽셀의 차이
  • DP 케이블, HD 케이블
  • TV = HD
  • Computer = UHD (그래픽카드 + 모니터)

프린터

  • PPM (Page Per Minute)
  • DPI (Dot Per Inch) : 최소 150dpi, 기본 300dpi 이상 이어야지 제대로 인쇄됨.
    • 화면 : 72dpi (예시) ↔ 인쇄 : 최소 150dpi, 기본 300dpi 이상 이어야지 제대로 인쇄됨.

SW


운영체제

  • 1:1
    • DOS (Unix와 유사)
    • 한 사용자가 한 개의 프로그램 사용
  • 1:다
    • Windows, MacOS, Android
    • 한 사용자가 여러 프로그램을 사용
  • 다:다
    • 서버용 OS
    • 여러 사용자가 여러 개의 프로그램 사용가능
      • 데니스 리치 : 리눅스 개발
      • Algol → B → Unix (B로 만듧) → C
      • C → C++ → Java → C#
    • UNIX, LINUX, Windows-Server
      • UNIX
        • 다중 사용자 방식의 대화식, 시분할처리 시스템용 운영 체제
        • Solaris
      • LINUX
        • 토발즈 리누스가 커널 개발.
        • 소형 컴퓨터에 UNIX가 작동하도록 만듦.
        • 오픈소스로 다양한 배포 버전 존재 (Ubuntu, Radhat, debian)
          • 리눅스 커널을 사용하면 리눅스라고 부른다
          • Debian 계열 : Ubuntu
          • RedHat 계열 : CentOS 무료, Fetora 유료, RedHat 유료
        • GNU의 GPL에 의해 무료로 배포됨
          • GNU 프로젝트에 의해서 완성
          • 유닉스의 유료화에 반기를 들고 새로운 무료 버전의 유닉스를 만들자는 취지의 GNU(GNU is not UNIX) 단체가 생겼다
          • GPL(GNU General Public License, GNU 일반 공중 사용 허가서)라는 ‘소스 공개 및 자유로운 이용을 원칙으로 하는’ 라이선스에 의해 배포
        • 다중 스레드 지원
          • 하나의 프로세스 내에서 여러 개의 네트워크 작업을 동시에 처리할 수 있기 때문에 강력한 네트워크 지원 가능
  • 운영체제
    • 사용자가 실행하는 응용 프로그램이 올바르게 실행되도록 돕고 필요한 자원을 할당해 주는 프로그램
    • 커널 + 시스템 프로그램
    • 프로세스 관리
      • CPU 할당
    • 자원 접근 및 할당
    • 파일 시스템 관리

  • 커널

    • 사용자가 System Call을 통해 컴퓨터 자원을 사용할 수 있게해주는 자원 관리자
    • 커널은 사용자가 하드웨어에 접근하고 통신하기 위한 중간 다리 역할
    • 사용자 모드 → system call → 커널 모드 →
    • system call : 사용자 모드 → 커널 모드로 전환
    • CPU, 메모리, 파일, 네트워크, 입출력 장치 등을 관리

  • 다중 사용자

    • 여러 사용자가 동시에 같은 OS에 접근하여 이용
  • 다중 작업

    • 한 사용자가 동시에 여러 작업 이용
  • 시분할처리

    • CPU의 처리 시간을 아주 짧게 세분화하여 각 프로그램에 차례대로 CPU 할당.
    • 각 사용자는 마치 컴퓨터를 독점하고 있는 것처럼 사용한다. → 대화형
    • 여러 사용자가 동시에 여러 작업 이용
  • 대화형 운영체제

    • 사용자가 명령어를 입력하면 바로 출력되는 결과를 화면에 표시해준다
    • 컴퓨터와 사용자가 1:1 처럼 인식되는 것
  • OLE(Object Linking & Embedding) : 윈도우에서 프로그램 간의 데이터를 공유하는 기술

    • 인터넷에서도 데이터 공유 OLE = Active X
  • AWS

    • PC 대여
    • 비슷한 플랫폼
      • cloud type : 웹 서버 평생 무료
      • DotHome : 정적 웹페이지 평생 무료

Application Program

  • Word process
    • 문서 작성
  • Spread Sheet
    • 전자 계산기
  • Database
    • MS-Access (정형 데이터)
    • MySQL
    • MariaDB
    • Oracle
    • MongoDB (off-line, 비정형 데이터)
    • Redis (on-line, 비정형 데이터)
      • 정형 데이터
        • 미리 정해 놓은 형식과 구조에 따라 저장되도록 구성된 데이터
        • 행과 열로 구성
        • 데이터 모델을 준수하는 식별가능한 구조
        • 시스템에 쉽게 적용할 수 있다
      • 비정형 데이터
        • 정의된 구조가 없이 정형화되지 않은 데이터
        • 규칙이나 형식이 없다
        • 문자열, 비디오, 이미지, 설문조사
  • Presentation
  • Utility
    • 백신, 압축, 복구, etc.
  • Game
  • Graphic
  • 멀티미디어
  • Communication
    • Web browser : 크롬, 사파리, 파이어폭스, 오페라, 엣지
  • Language
    • 순차적 언어
      • Fortran, RM-Cobol
    • 구조적 언어
      • C, Pascal
    • 객체지향 언어
      • Java, Python, C++ (윈도우 환경에서 실행되는 모든 언어)

컴파일러/인터프리터/트랜스파일러

  • 컴파일러
    • 고급언어 > 기계어
    • Fortran, Cobol, C, Pascal
    • source → compiler → object file(기계어) → link → exe(executive file)
    • 번역만 하고 의미는 모름 > 링크 통해 라이브러리를 검색해 실행 가능하게 됨
      • Link : + lib (library)

  • Link
    • 컴파일된 오브젝트 파일들을 연결, 병합하여 실행 파일을 만듦
    • B 코드에서 A 코드의 메소드를 참조할 때, A와 B를 연결해준다.
    • 정적 링크
      • 링커를 통해 링크를 실행하여 컴파일된 소스파일을 연결하여 실행 파일을 만듦
    • 동적 링크
      • 프로그램 실행 중, 외부에 있는 소스코드를 찾아서 연결한다.
      • 링커가 필요없다.
  • 링크 과정에서 c언어의 lib이 커서 exe 용량도 커지는 문제 발생
    • 기능별로 라이브러리를 나눔
    • 소스 코드에서 필요한 기능마다 각각 추가
    • #include<stdio.h>
  • 인터프리터
    • JS, JSP, PHP, ASP, Python
    • 스크립트 언어
      • 소스가 공개됨
    • 대화형 언어
    • 한 줄 씩 실행된다
  • 바이트코드
    • Java, C#
  • 트랜스파일러
    • 한 프로그래밍 언어에서 다른 프로그래밍 언어로 변환
    • TypeScript
      • .tsx, .ts → .js, .jsx 변경해야 함
      • .tsx, .ts 확장자를 웹 브라우저가 인식 못 함
      • 확장자 형식만 바꾼 것. 기계어로 변환이 아님.
    • BABEL
      • JSES 6 이전으로 변환
  • JS
    • 2015, JSES 6 발표
    • 2016, JSES 7
    • 이후, TypeScript
    • js는 브라우저 안에서 실행
    • v8 엔진으로 독립적으로 실행
  • Java 실행 과정
    • java source > compiler > .class > JRE(JVM) > 실행
    • JRE (win, mac, linux) ↔ link 대신
    • JDK (JRE를 포함)
      • Oracle JDK (유료)
      • Open JDK (Oracle에서 만듦, 무료)
      • Zulu JDK
    • JVM이 프로그램 실행 도중에 필요한 .class를 찾아서 class path에 로드해준다.(Dynamic Link)
  • API (App Programming Interface) > SDK (SW Development Kit)
    • api가 모여서 sdk
    • 예) direct x
  • 32비트 vs 64비트
    • CPU가 처리하는 데이터의 최소 단위, 즉 레지스터의 크기
    • 64비트 : 대규모, 고부하 처리에 유리

Refs

리눅스, 유닉스

https://ko.wikipedia.org/wiki/유닉스

https://hi-guten-tag.tistory.com/88

https://gptjs409.github.io/infra/2019/09/23/linux.html

https://sean.tistory.com/229

다중사용자

https://ko.wikipedia.org/wiki/다중_사용자

link

https://gofo-coding.tistory.com/entry/2-MIPS-Compile-Link-Run

https://da-nyee.github.io/posts/operating-system-compile-link-build/

https://kimvampa.tistory.com/27

리팩토링

https://ko.wikipedia.org/wiki/리팩터링

java jvm

https://doozi0316.tistory.com/entry/1주차-JVM은-무엇이며-자바-코드는-어떻게-실행하는-것인가

cpu 연산 단위

https://velog.io/@younoah/CPU의-32비트와-64비트란

시분할처리

http://terms.tta.or.kr/dictionary/dictionaryView.do?subject=시분할+시스템

커널

https://hongong.hanbit.co.kr/운영체제란-커널의-개념-응용-프로그램-실행을-위한/

728x90