- 프로세스의 개념을 이해한다.
- 프로세스의 상태를 파악한다.
- 프로세스 관리에 대한 지식을 파악한다.
- PCB
- Process Queue
- Contenxt Switching
- 프로세스 : 메인 메모리에 할당되어 실행중인 프로그램
- 프로그램 : 보조 기억장치에서 대기중인 실행 파일(일하지 않는 상태)
- 즉, 실행을 위해 커널에 등록된 작업을 의미한다.
- New : 메인 메모리에 할당된 상태
- Ready : CPU에 할당받는 것을 대기하는 상태
- Run : CPU에 할당받아 실행중인 상태
- Waiting : CPU외에 다른 장치에 할당받아 다른 작업을 하는 상태
- Terminated : 프로세스가 종료된 상태
다음은 프로세스 상태의 전이도이다.
- PCB : 프로세스를 관리하기 위해, 프로세스의 정보를 저장한다.
- 각 프로세스마다 하나씩 가지고 있다.
- 프로세스 상태, 프로세스 고유 식별 번호, CPU 점유 시간, 우선순위 등 다양한 담는다.
- 프로세스는 한 번에 여러개가 실행되며 상태가 계속 변하기때문에, 받아야하는 서비스도 달라진다. 따라서 서비스를 기다리는 순서가 존재하게 되고, 이러한 순서를 기다리는 곳을 Process Queue라고 한다.
- Job Queue : 메인 메모리 할당을 기다리는 Queue
- Ready Queue : CPU 할당을 기다리는 Queue
- Device Queue : 다른 장치(I/0 등)를 대기하는 Queue
- Context Switcing : CPU가 점유하는 프로세스를 옮기는 것을 의미한다.
- 즉, 실행중이던 프로세스를 멈추고 다른 프로세스가 실행됨을 의미한다.
- Scheduler : CPU가 선택할 프로세스를 정해주는 작업
- Dispatcher : 실행중이던 프로세스의 PCB에 데이터를 갱신하고, 새 프로세스의 PCB를 불러오는 작업
- Context Switching Overhead : Context Switching에 소요되는 시간 및 자원을 의미한다. OS의 성능에 핵심적인 역할을 한다.
인터넷
인터넷 작동 원리HTTP란?브라우저 동작 원리DNS 작동 원리도메인 네임이란?호스팅이란?
기본적인 프론트엔드 지식HTMLCSSJavaScript
OS 및 일반적인 지식터미널 사용방법OS 작동 방식프로세스 관리- 스레드와 동시성
- 기본적인 터미널 명령어
- 메모리 관리
- 프로세스간 통신 (IPC)
- 입출력 관리
- POSIX 기초
- 기본적인 네트워크 개념
버전 관리- Git 기본 사용법
DataBase- PostgreSQL (변경 가능성 있음)
- MongoDB
DataBase 상세 정보- ORM
- ACID
- Transaction
- N + 1 Problem
- DataBase 정규화
- Index와 작동 방식
API- 인증
- REST
- JSON APIs
캐싱- CDN
- Server side
- Client side
웹 보안 지식- MD5, SHA family, scyrpt, bcrypt
- HTTPS, CORS, SSL/TL, 보안 정책
Testing- 통합 테스트
- 단위 테스트
- 기능 테스트
- CI/CD
개발과 설계 원칙- SOLID
- KISS
- YAGNI
- DRY
아키텍처 패턴- 모놀로틱 앱
- 마이크로서비스
- SQA
- Serverless
검색 엔진- ElasticSearch
메세지 브로커- RabbitMQ, Kafka
컨테이너화 vs 가상화- Docker
GraphQL- Apollo
- 웹 소켓
- 웹 서버
확장성- 측정, 모니터링, 원격측정
- 마이그레이션 전략
- 수평적 확장 vs 수직적 확장
- 관찰 가능성을 고려한 확장