본문 바로가기

TIL (Today I Learned)87

[CS] Process Scheduler #2 이 포스팅은 한국기술교육대학교 김덕수 교수님의 운영체제 강의를 참고하여 작성되었습니다. 기본 스케줄링 알고리즘 • FCFS (First-Come-First-Service) • RR (Round-Robin) • SPN (Shortest-Process-Next) • SRTN (Shortest Remaining Time Next) • HRRN (High-Response-Ratio-Next) • MLQ (Multi-level Queue) • MFQ (Multi-level Feedback Queue) FCFS (First-Come-First-Service) 선착순 알고리즘 Non-preemptive scheduling 스케줄링 기준 : 도착 시간 (선착순) 자원을 효율적으로 사용 가능. Why? schedulin.. 2022. 12. 16.
[CS] Process Scheduler #1 이 포스팅은 한국기술교육대학교 김덕수 교수님의 운영체제 강의를 참고하여 작성되었습니다. 다중프로그래밍 (Multi-programming) 여러개의 프로세스가 시스템 내 존재 자원을 할당 할 프로세스를 선택 해야함 - 스케줄링 자원 관리 - 시간 분할 (time sharing) 관리 하나의 자원을 여러 스레드들이 번갈아 가며 사용 예) 프로세서 (Processor) 프로세스 스케줄링 (Process scheduling) > 프로세서 사용시간을 프로세스들에게 분배 - 공간 분할 (space sharing) 관리 하나의 자원을 분할하여 동시에 사용 예) 메모리 (memory) 스케줄링(Scheduling)의 목적 시스템의 성능(performance) 향상 대표적 시스템 성능 지표 (index) - 응답시간 (.. 2022. 12. 16.
[CS] 스레드 관리 이 포스팅은 한국기술교육대학교 김덕수 교수님의 운영체제 강의를 참고하여 작성되었습니다. 프로세스는 자원을 할당받고, 제어를 한다. 제어 부분을 스레드라고 한다. 스레드(Thread) Light Weight Process (LWP) 스레드는 자원은 공유하고 제어를 각각 가지고 있다. 프로세서(e.g., CPU) 활용의 기본 단위 구성요소 - Thread ID - Register set (PC, SP 등) - Stack (i.e. local data) 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유 전통적 프로세스 = 단일 스레드 프로세스 스레드의 장점 사용자 응답성 (Responsiceness) - 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능 자원 공유.. 2022. 12. 15.
[CS] Process vs Thread 이 문서는 유튜브 '널널한 개발자 TV'님의 강의를 토대로 작성되었습니다. Proces는 연산할 것에 대한 관리의 단위이다. 그 단위는 OS가 관리한다. 연산은 연속적이며, Process에는 흐름이 기본적으로 1개 있다. 한 Process내부에 흐름이 n개 있을 수 있다. 동시에 각자 작용한다. 이때의 흐름을 Thread라고 한다. 이 흐름이 여러개가 되면 Multi-threading OS는 가상 메모리 공간을 프로세스에게 할당한다. Process(작업)는 최소 1개의 Thread 존재 OS는 Virtual Memory(제한된 공간)를 Process에게 할당한다. Process에 속한 모든 Thread는 Process의 Virtual Memory로 공간 제약 된다. Multi-Threading > 동시성.. 2022. 12. 15.
[CS] 표준 입출력, File offset & File pointerIO #5 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. #1 Handling file offset #include int fseek(FILE *stream,long offset,int whence); long ftell(FILE *stream); void rewind(FILE *stream); int fsetpos(FILE *stream,const fpos_t *pos); int fgetpos(FILE *stream,fpos_t *pos); stream offset : 이동시킬 byte 수 (양수 or 음수) whence : 기준 위치 SEEK_SET, SEEK_CUR, SEEK_END pos : offset을 저장할(or 하고 있는) fpos_t 주.. 2022. 12. 14.
[CS] 표준 입출력, Standard IO #4 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. 표준 파일 입출력에는 다음 4가지가 있다. (1) Character IO (2) String IO (3) Binary IO (4) Formatted IO 이번 포스팅에서는 (3), (4)에 대해서 다루겠다. 문자인 경우 '아스키 코드' 로 변환되어 저장된다. 파이너리 파일은 메모리에 있는 이진수 데이터가 그대로 저장된다. #1 Binary IO FILE *fopen(const char *filename, const char *mode); 파일을 읽을 때 mode인자에 binary인자를 포함하여 읽으면 된다. Binary IO Read & Write, fread(3), fwrite(3) #inclu.. 2022. 12. 14.
[CS] 표준 입출력, Standard IO #3 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. 표준 파일 입출력에는 다음 4가지가 있다. (1) Character IO (2) String IO (3) Binary IO (4) Formatted IO 이번 포스팅에서는 (1), (2)에 대해서 다루겠다. #1 Character-based reading, fgetc(3) #include int fgetc(FILE *stream); int getc(FILE *stream); // macro int getchar(void); // = getc(stdin) stream : File operation을 수행할 stream c (character) : 쓰려는 문자 Return : 읽은/기록한 문자 | E.. 2022. 12. 14.
[CS] 표준 입출력, Standard IO #2 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. Standard IO - 플랫폼에 독립적인 유저 버퍼링 솔루션(user-buffering solution)이다. - File pointer File operation을 관리하는 구조체(FILE)를 가리키는 포인터 내부적으로 file descriptor와 연동(mapping)됨 - Stream 프로그램과 file을 연결하는 통로 Stream of bytes Workflow of file I/O - File open 파일 스트림 생성 및 FILE 구조체에 저장 fopen() - File access (Read / Write) 파일의 내용 읽기 또는 정보 기록 fprintf(), fscanf(), fg.. 2022. 12. 14.
[CS] 표준 입출력, Buffered IO #1 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. Block - 파일 시스템의 추상화된 개념. 물리적 Disk를 추상. 운영체제 입장에서 file system은 block들의 나열이다. - Block의 크기는 일반적으로 512~8192 bytes (2^n) Sector size < Block size < Page size - Disk (or block device) access의 최소 단위 File IO vs Disk IO - File IO with system call Access in a unit of byte - Disk IO Access in a unit of block 매번 byte단위로 Disk에 접근하는 것은 비효율적이다. Buffe.. 2022. 12. 14.