본문 바로가기

프로그래밍

[Operating System] - 스케쥴링 알고리즘 패스트캠퍼스 올인원 패키지 - 컴퓨터 공학을 보고 정리하는 용도의 포스팅입니다. 프로세스(process)란? 실행 중인 프로그램 메모리에 올려져서 실행중인 프로그램 작업, task, job 이라는 용어와 혼용해서 사용. 응용 프로그램은 프로세스가 아니다 응용 프로그램은 여러 개의 프로세스로 이루어질 수 있음 하나의 응용 프로그램은 여러 개의 프로세스(프로그램)가 상호작용을 하면서 실행될 수도 있음 스케줄러 프로세스 실행을 관리! 스케줄링 알고리즘의 목표 시분할 시스템의 경우 -> 프로세스 응답 시간을 가능한 짧게 멀티 프로그래밍의 경우 -> CPU활용도를 최대로 높여서 프로세스를 빨리 실행 종류 FIFO 스케줄러 최단 작업 우선(SJF) 스케줄러 우선순위 기반 스케줄러 Round Robin 스케줄러 FI.. 더보기
[Operating System] - 프로세스 스케줄링(멀티 프로그래밍) 패스트캠퍼스 올인원 패키지 - 컴퓨터 공학을 보고 정리하는 용도의 포스팅입니다. 단번에 이해하긴 어렵기 때문에 다양한 측면에서 접근하여 이해도를 높이자 멀티 프로그래밍 최대한 CPU를 많이 활용하도록 하는 시스템 시간 대비 CPU 활용도를 높이자 응용 프로그램을 짧은 시간 안에 실행 완료를 시킬 수 있음 온전히 CPU를 쓰기보다, 다른 작업을 중간에 필요로 하는 경우가 많다. 응용 프로그램이 실행되다가 파일을 읽는다던지 응용 프로그램이 실행되다가 프린팅을 한다던지 등.. 정리 멀티 프로그래밍의 핵심 여러 응용 프로그램 실행을 가능케 함 응용 프로그램이 동시에 실행되는 것처럼 보이도록 함 CPU를 쉬지 않고 응용 프로그램을 실행토록 해서, 짧은 시간 안에 응용 프로그램이 실행완료될 수 있도록 함 컴퓨터 응.. 더보기
[Operating System] - 프로세스 스케줄링 패스트캠퍼스 올인원 패키지 - 컴퓨터 공학을 보고 정리하는 용도의 포스팅입니다. 프로세스 = 응용 프로그램 스케줄링 = 시간 순서에 따라 CPU에 배치하는 방법 배치 처리 시스템 일괄 처리, 배치 처리, batch processing이라고 부른다 컴퓨터 프로그램 실행 요청 순서에 따라 순차적으로 프로그램을 실행하는 방식 한번에 등록된 여러 프로그램을 순차적으로 실행 가능 자료구조의 queue와 비슷 FIFO : First In First Out(먼저 들어온 데이터가 먼저 나간다) 문제점 동시성의 문제 두 개 이상의 프로그램을 동시에 실행할수가 없다 첫번째 애플리케이션의 동작시간이 오래걸리면 두번째 애플리케이션은 실행시간의 길이와 상관없이 무조건 기다려야 한다 이러한 문제들로 인해 멀티 프로그래밍 / 시분.. 더보기
[Operating System] - 사용자와 커널 모드 패스트캠퍼스 올인원 패키지 - 컴퓨터 공학을 보고 정리하는 용도의 포스팅입니다. CPU Protection Rings CPU도 권한 모드가 있다 사용자 모드 (user mode by applications) 응용 프로그램이 사용 커널 모드 (kernel mode by OS) OS가 CPU를 사용할때 쓰는 모드 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근 가능모드 실질적으로는 ring0과 ring3만 사용한다고 함. ring3 = 사용자, ring0 = 커널 사용자 모드와 커널 모드 응용 프로그램이 함부로 전체 컴퓨터 시스템에 영향을 끼칠수 없음 영향을 끼치려면? 악성 코드가 들어있으면 가능 응용 프로그램과 운영체제 위의 그림처럼 우리가 만들고 사용하는 프로그램은 가장 윗 단. 시스템콜은 커널 .. 더보기
[Operating System] - 시스템 콜 패스트캠퍼스 올인원 패키지 - 컴퓨터 공학을 보고 정리하는 용도의 포스팅입니다. 학습목표 시스템 콜의 개념 및 원리와 배경에 대해 이해하자 응용 프로그램, 운영체제, 컴퓨터 하드웨어(시스템 리소스)관계 운영체제의 전반적인 구조 운영체제는 응용 프로그램이 요청하는 메모리를 허가하고, 분배 CPU시간을 제공 IO Devices 사용을 허가 하거나 제어한다. 나와 비슷한 입문자 내지는 컴알못을 위해 친절히 도서관에 비유해주신걸로 보자면ㅠㅠ 운영체제 = 도서관 응용 프로그램 = 시민 컴퓨터 하드웨어 = 책 시민은 도서관에 원하는 책(자원)을 요청 도서관은 적절한 책(자원)을 찾아서, 시민에게 빌려줌 기한이 다 되면, 도서관이 해당 책(자원)을 회수함 비유는 그저 이해하기 쉽게 하기 위한 비유일뿐, 실질적인 구조.. 더보기
[Operating System] - 운영체제 역사 - 1990년대~최근 패스트캠퍼스 올인원 패키지 - 컴퓨터 공학을 보고 정리하는 용도의 포스팅입니다. 학습목표 1990년~현재까지의 운영체제의 개략적인 역사에 대해 이해하자 1990년대 GUI환경에 따른 응용 프로그램과 개인용 컴퓨터의 대중화 액셀이나 워드 프로세서 같은 응용프로그램들의 발달 개인용 컴퓨터의 대중화에 따른 사용자 증대와 Windows OS 대중화 기업에서 업무적으로 엑셀 같은 프로그램의 사용이 대중화되면서 이런 응용프로그램을 사용하기 위해 컴퓨터를 구매하는 경우도 많았다. 지금으로 치면 고화질 게임을 하기 위해서 전용 컴퓨터를 사는것과 비슷한 이치. 네트워크 기술의 발전 월드와이드웹(WWW) 인터넷 대중화 이전까지는 컴퓨터끼리의 통신의 의미에 가까웠다면 인터넷의 대중화로 인해 현재의 네트워크 개념으로 확장됨 .. 더보기
[Operating System] - 운영체제의 역사(1970-80년대) 패스트캠퍼스 올인원 패키지 - 컴퓨터 공학을 보고 정리하는 용도의 포스팅입니다. 학습목표 1970~80년대 운영체제의 개략적인 역사에 대해 이해하자 1970년대 제대로 된 운영체제이자 근간인 UNIX(유닉스) OS 등장 유닉스(Unix)는 대부분의 현대적 컴퓨터 운영 체제의 원형이 된 OS. 현대의 윈도우 계열이 아닌 리눅스, 안드로이드, macOS, iOS 등의 많은 운영 체제가 유닉스를 그 뿌리로 하고 있음. 원래는 멀티유저용 서버 운영체제이나 현재는 개인용 데스크탑이나 임베디드용으로도 쓰인다. 특징 멀티 태스킹, 시분할 시스템, 멀티 프로그래밍 다중 사용자 지원 본격적으로 운영체제의 중요성이 부각된 시기라고 할 수 있다. 1980년대 개인용 컴퓨터 시대의 도래 이전 : 대형 컴퓨터를 여러명이 접속해.. 더보기
[Operating System] - 운영체제의 역사(1950-60년대) 패스트캠퍼스 올인원 패키지 - 컴퓨터 공학을 보고 정리하는 용도의 포스팅입니다. 학습목표 1950-60년대 운영체제의 개략적인 역사에 대해 이해하자 1950년대 운영체제라는 개념 자체가 없었음 1개의 응용 프로그램이 시스템 자원을 제어 1960년대 초 운영체제의 기반이 되는 배치 처리 시스템(batch processing system)출현 여러 응용 프로그램을 등록시켜 놓으면, 순차적으로 실행 응용 프로그램 관리1960년대 후반 시분할 시스템(Time Sharing System), 멀티 태스킹(Multi Tasking) 개념의 등장 응용 프로그램이 CPU를 사용하는 시간을 잘개 쪼개서, 여러개를 동시에 실행하는 기법 시분할 시스템 다중 사용자를 지원하고, 컴퓨터 응답 시간을 최소화하는 시스템 멀티 태스킹.. 더보기