본문 바로가기

TIL/Computer Science

(8)
(운영체제) 멀티 프로그래밍 멀티 프로그래밍 목적: 최대한 CPU를 많이 활용하도록 하는 시스템 시간대비 CPU 활용도를 높이자 응용 프로그램을 짧은 시간안에 실행 완료 시킬수있음 시간대비 CPU 활용도? 응용프로그램은 온전히 CPU를 쓰기 보다 다른 작업을 중간에 필요로 하는 경우가 많다. 이 경우 CPU를 그냥 놀리지 말고 최대한 활용하자는게 멀티 프로그래밍 응용프로그램이 실행되다가 파일을 읽는다 응용프로그램이 실행되다가 프린팅을 한다 APP1 APP2 APP2 APP1 APP2 APP1 APP1 저장매체에서 파일 읽음 위와 같이 APP1이 실행되다가 file open 함수를 만나 저장매체에서 파일을 읽어오는 시간동안 CPU는 다른 프로세스를 처리하게 한다(좀 더 나가자면, APP1은 저때 blocking 상태가 된다) 용어 정..
(운영체제) 배치처리, 멀티태스킹, 멀티프로세싱 배치처리시스템 자료구조의 큐와 비슷한 구조 FIFO 방식으로 프로세스 처리 배치처리시스템의 문제점 어떤 프로그램은 실행시간이 오래 걸려서 다른 프로그램이 실행되는데에 많이 기다려야 함 MP3를 들으며 문서작성 불가능 (동시에 여러 응용 프로그램 실행) 여러 사용자가 동시에 하나의 컴퓨터를 쓰는게 불가능 (다중 사용자 지원) -> 이러한 문제점을 극복하보자 멀티프로그래밍/시분할 시스템이 나옴 시분할 시스템 시분할 시스템 : 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화 하는 시스템 응용프로그램이 CPU를 점유하는 시간을 잘게 쪼개어 실행될 수 있도록 하는 시스템 멀티 태스킹 단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이는 시스템 시분할 시스템의 기본 기술과 동일 멀티 태스킹과 멀티..
(운영체제) 사용자 모드와 커널 모드 CPU Protection RingCPU도 권한 모드라는 것을 가지고 있음 사용자 모드 (User mode by application): 응용 프로그램이 사용 커널 모드 (Kernel mode by OS) : 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케하는 모드 보통 Ring3이 사용자 모드, Ring0이 커널모드이며 이 두가지 모드를 주로 사용 응용프로그램과 운영체제 명령어에 따라서 어떤 명령어는 사용자 영역에서 처리가 되기도, 어떤 명령어는 시스템 콜을 통해서 커널 영역에서 실행 예를 들어 더하기 연산을 한 후 파일에서 데이터를 가져와 그 값을 빼는 응용프로그램이 있다고 할 때, 더하기, 빼기 연산은 사용자 영역에서 실행될 것이고, 파일의 데이터를 가져오기 위해선 응용프로그램이 시..
(운영체제) 시스템 콜 응용 프로그램, 운영체제, 컴퓨터 하드웨어(시스템 리소스) 관계 도서관으로 비유 운영체제는 도서관 응용 프로그램은 시민 컴퓨터 하드웨어는 책 운영체제의 역할 시민은 도서관에 원하는 책(자원)을 요청 도서관은 적절한 책(자원)을 찾아서 시민에게 빌려줌 시민이 기한이 다되면 도서관이 해당 책(자원)을 회수함 정리 운영체제는 응용 프로그램이 요청하는 메모리를 허가하고 분배한다 운영체제는 응용 프로그램이 요청하는 CPU시간을 제공한다 운영체제는 응용 프로그램이 요청하는 I/O Device 사용을 허가/제어한다 유저가 응용 프로그램을 실행하면 응용 프로그램은 운영체제에 시스템 자원을 요청. 운영체제는 하드웨어에서 해당 시스템 자원을 응용 프로그램에 빌려줌 운영체제는 사용자 인터페이스 제공 쉘 사용자가 운영체제 기..
(운영체제) 시분할 시스템과 멀티 태스킹 시분할시스템 다중 사용자를 지원하고 컴퓨터 응답시간을 최소화 하는 시스템 응용 프로그램이 CPU를 사용하는 시간을 잘게 쪼개서 여러개의 응용 프로그램을 동시에 실행하는 기법 멀티태스킹 단일 CPU에서 여러 응용 프로그램의 병렬 실행을 가능케하는 시스템. 결국 이것도 시간을 굉장히 잘개 쪼개서 실행. 보통은 시분할 시스템 = 멀티태스킹 이라 할 수 있을정도로 유사 멀티프로그래밍 최대한 CPU를 많이 활용하도록 하는 시스템 (시간대비 CPU활용도를 높이자) 시분할 시스템 정리 배치처리 시스템의 단점 컴퓨터 응답 시간이 오래 걸릴 수 있다 실행 시간도 오래 걸릴 수 있다(Cpu가 필요없음에도 응용 프로그램이 CPU를 점유할 수 있어서) 시분할 시스템/멀티태스킹 핵심기술: 시간을 잘게 쪼개서 여러 응용프로그램을..
(운영체제) 운영체제와 응용프로그램 해당 포스트는 Fastcampus의 '컴퓨터공학 올인원 패키지' 강의를 보고 정리한 글입니다. 운영체제 역할 1. 시스템자원 관리자 - 시스템자원 = 컴퓨터 하드웨어 CPU(중앙처리장치), Memory(DRAM, RAM) I/O 장치 모니터, 마우스, 키보드, 네트워크 등 저장매체 : HDD, SSD ※ 컴퓨터 하드웨어는 스스로 할 수 있는 것이 없다! ex) 각 프로그램이 CPU를 얼마나 사용할지 CPU가 스스로 결정 불가, 각 프로그램이 어느 주소에 저장되어야 하는지, 어느 정도의 공간을 확보해줘야 하는지 스스로 판단 불가 => 운영체제가 관리한다. 이러한 이유로 운영체제는 시스템 자원 관리자 2. 사용자와 컴퓨터간의 커뮤니케이션 지원- 주로 shell이 담당 3. 컴퓨터 하드웨어와 응용 프로그램을..
(C언어) 2. 동적 메모리 할당 1. 동적 메모리 할당의 개념 1) 일반적으로 C언어에서 배열의 경우 사전에 적절한 크기만큼 할당해줘야 함 2) 우리가 원하는 만큼만 메모리 할당하여 사용하고자 한다면 동적 메모리 할당을 사용 3) 동적이라는 말의 의미는 '프로그램 실행 도중에' 라는 의미 2. 동적 메모리 할당 함수 1) C언어에서는 malloc() 함수를 이용해 원하는 만큼의 메모리 공간을 확보 가능 2) malloc() 함수는 메모리 할당 성공하면 주소 반환 하고, 실패하면 null 반환 3) 동적 메모리 할당을 수행할 때 마다 할당되는 포인터의 주소는 변칙적 4) 동적으로 할당된 변수는 힙영역에 저장 5) 전통적인 C언어에서는 스택에 선언된 변수는 따로 메모리 해제를 안해줘도 된다 6) 반면 동적으로 할당된 변수는 반드시 free..
(C언어)1. 컴퓨터가 변수를 처리하는 법 컴퓨터가 변수를 처리하는 방법 1. 프로그램 메모리 주소 1) 컴퓨터에서 프로그램이 실행되기 위해서는 프로그램이 메모리에 적재되어야 함 2) 당연히 프로그램의 크기를 충당할 수 있을 만큼의 메모리 공간이 있어야 함 3) 특정한 프로그램을 실행하게 되면 그 프로그램이 메모리에 적재되어 돌아가게 됨 4) 일반적인 컴퓨터의 운영체제는 메모리 공간을 네 가지로 구분하여 관리함 2. 전역 변수 1) 전역 변수란 프로그램 어디서든 접근 가능한 변수이다. 2) 프로그램 시작과 동시에 메모리(데이터 영역)에 할당 된다. 3. 지역 변수 1) 지역 변수란 프로그램의 특정한 블록에서만 접근 가능한 변수 2) 함수가 실행될 때 마다 메모리(스택 영역)에 할당되어 함수가 종료되면 메모리에서 해제 4. 정적 변수 1) 정적 변..