명령어 모음 shutdown : 시스템 종료 halt : 시스템 종료 init 0 : 시스템 종료 poweroff : 시스템 종료 reboot : 시스템 재부팅 init 6 : 시스템 재부팅 shutdown -r now : 시스템 재부팅 pwd : 현재 자신이 위치하는 디렉토리 cd : 디렉토리 이동 ls : 자신이 속해있는 폴더 내에서의 파일 및 폴더들을 표시 mkdir : 디렉토리 생성 ( 폴더 생성 ) == 앞으로 폴더를 디렉토리로 쓰겠습니다. rmdir : 디렉토리 삭제 touch : 파일크기가 0인 파일 생성 ( 잘 쓰진 않지만, 파일 시간 정보를 변경하는 용도로 쓰이거나, 하드디스크의 오류를 판단할 때 쓰입니다) cp : 파일 복사 ( 디렉토리 내부까지 복사하기 위해서는 cp -R 이라는 옵션..
- 가상 메모리 - 메인 메모리의 크기가 한정되어 있으므로 물리적인 메모리 크기보다 크기가 큰 프로세스를 실행시킬 수 없다. 예로 100MB 메인 메모리에서 200MB 크기의 프로세스를 실행할 수 없게 되는 것이다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 단순히 메인 메모리가 더 큰 컴퓨터를 사용해야하는가? 이런 방법은 매우 비효율적일 것이다. 그래서 나온 방법이 바로 가상 메모리이다. 프로세스의 모든 코드는 항상 필요한 것이 아니다. 오류 처리하는 부분이나 필요 없는 배열 부분은 실제로 프로세스가 잘 동작한다면 필요 없는 부분이 된다. 따라서 프로세스는 필요한 부분만 메모리에 올림으로써 메인 메모리에 올라가는 프로세스의 크기를 줄인다. 프로세스 이미지를 모두..
- 페이징(1) - 메모리의 낭비 공간인 hole을 최소한으로 만들기 위해 앞 장에서 많은 방법을 사용하였다. 최초 적합과 최적 적합을 통해 메모리의 공간에 적재하는 방식에 변화를 주었는데 이를 통해서도 메모리 공간의 1/3 정도가 낭비가 되었다. 이렇기 때문에 다른 방식인 Compaction이라는 방식을 사용하였으나 프로세스나 hole을 메모리 공간에서 이동시키기 위해서는 메모리 계산의 부담이 발생하기 때문에 힘들었다. 그래서 사용한 방식이 바로 페이징이다. 페이징은 프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재하는 방식이다. 프로세스는 항상 연속해서 들어가야 한다는 생각을 통해 메모리 공간 활용에 있어서 앞장에서는 연속 메모리 할당에 초점을 맞추었다. 이런 생각부터 뒤집어서 프로세스를 일정한 ..
메모리는 주소와 데이터로 구성되어 있다. CPU가 원하는 데이터의 주소를 메모리에 보내주게 되면 메모리는 CPU에게 해당하는 데이터를 보내준다. 또한 CPU에서 계산된 결과를 메모리의 특정 주소에 저장하고 명령을 보내면 메모리에 해당 주소에 데이터를 저장한다. 프로그램을 개발할 때는 여러 가지의 파일 형태를 가진다. 소스 파일은 고수준언어 또는 어셈블리언어로 개발된 파일을 말한다. 소스 파일은 컴파일러와 어셈블러에 의해 목적 파일로 전환된다. 목적 파일은 소스 파일에 대한 컴파일 또는 어셈블 결과를 나타내는 파일로 기계어로 나타내어진다. 목적 파일을 링크가 실행파일로 바꾼다. 실행파일은 링크의 결과로 나타난 파일이다. 링크는 하드디스크에 들어가 있는 다양한 내장 함수(Library)들을 실행하기 위해 연..
- 프로세스 관리(8) : 교착상태(Deadlock) - 프로세스는 실행을 위해 여러 자원을 필요로 한다. CPU, 메모리, 파일 등등 여러 자원을 사용하여 프로세스가 실행된다. 그런데 어떤 자원은 갖고 있으나 다른 자원을 갖지 못할 경우 대기 상태에 들어가서 기다려야한다. 자원은 한정되어 있는데 여러 프로세스가 같이 동작하는 상황이여서 이러한 상황이 발생하게 된다. 그러므로 운영체제는 이러한 자원을 프로세스들에게 잘 할당을 해주어야한다. 만약 잘 할당을 해주지 못하면 앞의 식사하는 철학자의 문제와 같이 모든 프로세스가 자원을 가지려고 대기하는 교착상태에 빠질 수 있다. 교착상태가 일어나는 필요조건은 4가지가 존재한다. 첫 번째는 상호배타(Mutual exclusion)이다. 상호배타는 동기화를 만족시키..
운영체제 7장- 프로세스 관리(4) : 임계구역 문제 및 세마포어 - 앞장에서 프로세스 동기화가 필요한 이유에 대해서 설명을 하였다. 은행계좌 문제를 통해 공통변수인 은행계좌에 대한 동시 업데이트가 발생하면 문제가 발생할 수 있다. 따라서 우리는 한 번에 한 쓰레드만 업데이트하는 프로세스 동기화가 필요하다. 이러한 문제를 임계구역 문제라고 한다. 여러 개의 쓰레드로 이루어진 시스템에서 각각의 쓰레드는 코드의 영역을 가지고 있는데 이 부분을 임계구역이라고 한다. 임계구역에서는 공통으로 사용하는 데이터를 바꾸거나 테이블을 업데이트하거나 파일을 쓰거나 하는 일을 할 수 있다. 앞의 은행계좌 문제로 설명을 하면 은행계좌에 대한 영역이 바로 임계구역이 되는 것이다. 임계구역을 영어로 하면 Critical sect..
Ch.6 Synchronization임계구역 문제 / 동기화 문제 / 해결방법Background만약 두 프로세스가 동시에 어떤 변수의 값을 바꾼다면 프로그래머의 의도와는 다른 결과가 나올 것이다. 이처럼 프로세스가 어떤 순서로 데이터에 접근하느냐에 따라 결과 값이 달라질 수 있는 상황을 race condition이라고 한다.1. The Critical-Section Problem코드상에서 경쟁 조건이 발생할 수 있는 특정 부분을 critical section이라고 부른다. critical section problem를 해결하기 위해서는 몇가지 조건을 충족해야 한다.Mutual exclution (상호 배제): 이미 한 프로세스가 critical section에서 작업중일 때 다른 프로세스는 critica..
Ch.5 Process SchedulingCPU 스케줄링 알고리즘, 평가기준1. Scheduling Criteria알고리즘을 평가할 때는 수행 시간(burst time)과 CPU 사용량(CPU utilization), 단위 시간 당 끝마친 프로세스의 수(Throughput), 하나의 프로세스가 끝날 때까지 걸리는 시간(Turnaround time), 레디 큐에서 대기한 시간(Wating time), 반응 시간(Response time)을 기준으로 한다.2. Scheduling Algorithm선점 : 우선순위에 따라 다른 프로세스가 자원을 강탈 할 수 있음. 응답성은 빠르지만, 오버헤드 많음.비선점 : 한 프로세스가 시작되면, 끝날 때 까지 그 프로세스만 사용. 응답성 느리지만, 오버헤드 적음. FCFS..
Ch.4 Threads스레드 개요, 스레드 라이브러리, 암시적 스레딩, 다중 스레드 프로그래밍, 다중 스레드 모델1. Threads쓰레드는 프로세스의 작업 흐름을 말한다. 하나의 프로세스가 한 번에 하나의 작업만 수행하는 것은 싱글쓰레드(Single thread)이며, 하나의 프로세스가 동시에 여러 작업을 수행하는 것은 멀티쓰레드(Multi thread)라고 한다. 프로세서와 메모리가 발전하며 가능해진 기술이다. 멀티프로그래밍 시스템이니까 프로세스를 여러개 돌려도 되는데 굳이 쓰레드를 나누는 데는 이유가 있다.두 프로세스가 하나의 데이터를 공유하려면 메시지 패싱이나 공유 메모리 또는 파이프를 사용해야 하는데, 효율도 떨어지고 개발자가 구현, 관리하기도 번거롭다.프로세스 사이 컨텍스트 스위치가 계속 일어나..
Ch.3 Process프로세스의 개념 / 프로세스의 특성(스케줄링,생성,...), / 프로세스간 통신 방법(공유메모리, 메시지전달) / 클라이언트-서버 시스템에서의 통신1. Process Concept job(일괄처리),task(시분할) 등을 처리하기 위하여 만든 프로그램이 메모리에 올라가 실행중인 것. Process Memory Structure프로세스는 독자적인 메모리 공간을 가지고, 메모리 구조는 위 그림과 같다Process State프로세스가 처음 생성됐을 때는 new, 프로세서에게 할당되기를 기다릴 때는 ready, 프로세서에 할당되어 실행될 때는 running, 실행 중 종료될 때는 terminated, 실행 중 작업이 완료되어 입출력을 기다릴 때는 waiting 상태를 갖는다.Process ..