TIL(Today I Learned)

1월 4일(월)

학습내용

  • 재미난 컴퓨터 기초 3편 학습
    • 운영체제
      • macOS는 UNIX 계열 OS이다.
      • 시스템 하드웨어 관리, (가상)시스템 서비스 제공, 자원 관리를 한다.
      • 프로세스는 실행중인 프로그램이다.
      • 프로세스는 생성, 준비, 실행, 대기, 종료의 라이프 사이클을 갖는다.
      • 프로세스 스케쥴링
        • FCFS(First-Come First-Served): 준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당
        • SJF(Shortest Job First): 실행시간이 가장 짧은 프로세스에게 먼저 CPU 할당. 평균 대기시간이 가장 적은 알고리즘. 실행시간이 긴 프로세스에 밀려 무한 연기상태 발생가능
        • Round Robin: 시분할 시스템을 위해 고안된 방식. FCFS 기법 변형. 각 프로세스는 시간 할당량 동안만 실행. 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치. 할당된 시간이 클수록 FCFS와 비슷. 할당시간이 작을 수록 문맥교환과 오버헤드가 자주 발생.
        • Priority Based Scheduling: 프로세스마다 우선순위 부여, 우선순위가 동일한 경우 FCFS 기법으로 할당, 가장 낮은 순위를 부여받은 프로세스의 무한 연기 발생가능.
        • Multi Queue Scheduling: 프로세스를 특정 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비단계 큐 사용. 준비상태 큐 마다 다른 스케쥴링 기법 사용가능. 다른 준비상태 큐로 이동 불가. 하위단계 준비 큐에있는 프로세스를 실행하는 도중이라도 상위 단계 준비상태 큐에 프로세스가 들어오면 상위단계 프로세스에게 CPU를 할당.
      • 주기억장치 관리: 운영체제는 주기억장치의 단순관리. 가상메모리(보조기억장치를 주기억장치처럼 활용) 기능을 제공한다.
      • 파일관리: 응용프로그램은 운영체제의 파일시스템을 통해 보조기억장치에 파일을 입출력한다.
      • 운영체제마다 파일시스템이 다르다. Unix File System, 확장 파일 시스템, ZFS, XFS, HFS, HFS+ 등이 있다.
      • 커널은 운영체제의 핵심, 정체성이다. 보안, 자원관리, 추상화 등을 담당한다.
      • 코어에 따라 멀티테스킹이 작동하는 방식이 다르다. 싱글코어 멜티테스킹, 멀티코어 멀티테스킹으로 나눠지며 싱글코어 멀티테스킹은 진정한 멀티테스킹이 아니라 작업을 작은 단위로 나눠서 바꿔가면서 실행한다.
    • 데이터베이스
      • 여러 사람에 의해 공유되어 사용될 목적으로 통하하여 관리되는 데이터의 집합. 통합된 정보들을 저장하여 운영할 수 있는 공용데이터들의 묶음.
      • 자료구조는 주기억장치에서 이루어질 내용, 데이터베이스는 보조기억장치에서 이루어질 내용.
      • 데이터베이스 종류는 관계형, 키-값형, 객체형, 문서형, 컬럼형 등이 있다.
      • DBMS(Database Management System): 데이터베이스에 접근할 수 있는 기능을 제공하는 소프트웨어. 즉, 데이터베이스계의 운영체제. MySQL, PostgreSQL, SQLite, MariaDB, 등이 있다.
      • SQL(Structured Query Language): DBMS를 통해 데이터를 관리하기 위한 구조화된 질의문을 작성하기 위한 언어. 관계형 데이터베이스 관리 시스템에서 사용.
  • 운영체제 및 프로세서 활동학습
    • M1 mac에서 iOS 앱 구동이 가능한 것은 프로세서 아키텍처가 아이폰과 같은 ARM으로 변경되었기 떄문이다.
    • 아키텍처 간에 명령어 집합 차이가 있다.
  • Kahoot
    • CPU의 구성요소: L1 Cache, ALU, Control Unit…
    • macOS, Windows, Red Hat은 운영체제, Linux는 커널
    • Git에서 작업 내역을 git directory에 추가하는 명령어는 commit 이다. (add는 staging area에 추가)
    • 타입을 실체화 한 것을 인스턴스라고 부른다.
    • 타입에 연관된 함수를 메서드라고 한다. 타입에 연관된 값은 프로퍼티.
    • 디자인 패턴은 객체 지향 프로그래밍에서 자주 발생하는 문제를 피하기 위해 정리해둔 특정 해결 방법론.
    • Delegation Design Pattern을 구현하기 위해 필요한 스위프트 언어 기능은 Protocol.
    • SOLID 원칙 (Single Responsibility Principle, Open-Closed P, Liskov Substitution P, Interface Segregation P, Dependency Inversion P)
    • Xcode로 수행할 수 있는 테스트: Performance Test, Unit Test, UI Test
    • compactMap과 flatMap은 기존의 값을 특정형태로 변경하며, 옵셔널일 경우 추출 후 변형까지 수행하는 고차함수.
    • 고차함수는 매개변수로 함수를 전달받거나 함수를 반환하는 함수.
    • LLVM은 모듈식의 재사용 가능한 컴파일러와 툴체인의 집합이며, LLDB는 이에 대응하는 디버거이다.
    • LLDB 명령어 중 po를 통해 출력하는 문자열을 임의로 지정하려면 debugDescription 프로퍼티를 구현하면 된다.

문제점/고민한점

  • 프로세서, CPU, 코어의 차이는?
  • 루트 프로세스, 사용자 프로세스, 서비스 프로세스는 무엇인가?

해결방법

  • 프로세서, CPU, 코어의 차이는?
    • CPU는 이름 그대로 중앙처리장치, 프로세서 보다 좀 더 넓은 범주의 단어.
    • 프로세서는 처리를 위한 논리회로.
    • 코어는 프로세서 내부에서 처리를 담당하는 부분.
  • 루트 권한 프로세스, 사용자 권한 프로세스, 서비스 권한 프로세스는 무엇인가?
    • 루트 권한 프로세스는 운영체제가 잘 작동하기 위해 실행되는 프로세스.
    • 사용자 권한 프로세스는 사용자 응용프로그램을 실행하는 프로세스.
    • 서비스 권한 프로세스는 백그라운드에서 실행되는 프로세스.