프로세스 생성 (Process Creation) 부모 프로세스(Parent Process)가 자식 프로세스(Child Process) 생성 보통 복제 생성을 함(추후 설명) 부모 프로세스가 자신과 같은 자식 프로세스를 생성함. 여기서 복제라는 것은 프로세스의 문맥을 모두 복사하는 것이다. code, data, stack, program counter 등 프로세스의 트리 (계층 구조) 형성 프로세스는 자원을 필요로 함 운영체제로부터 받는다 부모와 공유한다 원칙적으로 부모와 자식은 자원을 공유하지 않음 자원의 공유 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델(일반적) 자식이 부모를 그대로 복사하면 메모리 낭비가 발생한다(같은 것이 2개가 올라가기 때문에). 그래서 ..
프로세스의 개념 프로세스는 실행중인 프로그램이다 프로세스의 문맥(context) 특정 시점을 봤을 때 이 프로세스가 어디까지 실행을 했는가를 규명 PC가 어디를 가리키고 있는가 레지스터에 어떤 값을 넣어두고 있는가 현재 메모리에 어떤 내용을 담고 있는가 어떤 instruction까지 실행했는가 CPU 수행 상태를 나타내는 하드웨어 문맥 Program Counter(PC) 현재 메모리의 어느 부분을 실행하고 있는지 가리키는 레지스터셋 각종 register 프로세스의 주소 공간 - 메모리와 관련 code, data, stack 프로세스 관련 커널 자료 구조 PCB(Process Control Block) Kernel stack 커널은 어떤 프로세스든 간에 접근 가능하기 때문에 프로세스 별로 커널에 별도의 스..
본 챕터에서는 컴퓨터 시스템에서 하드웨어가 어떻게 동작하는지, 프로그램들이 이러한 하드웨어 위에서 어떻게 돌아가는지에 대한 내용을 다룬다. 컴퓨터 시스템 구조 보통 컴퓨터를 HOST라고 부른다. CPU의 작업 영역이 메모리이고, 매 clock 사이클마다 메모리에서 instruction(기계어)을 하나씩 읽어나가면서 실행하게 된다. 각각의 I/O 디바이스들은 각각을 전담하는 작은 CPU같은 것들이 존재한다. 이것을 device controller라고 부른다. 그래서 각각의 I/O와 관련된 작업은 CPU가 아니라 device controller에서 작업을 한다. 메인 CPU에 메인 memory 가 있듯이 디바이스들도 작업공간들이 필요한데, 이걸 local buffer라고 한다. CPU안에는 메모리보다 더 빠..
운영체제란 무엇인가? 운영체제(Operating System, OS)란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 따라서 사용자가 컴퓨터 하드웨어를 직접 사용하는 것이 아니라 운영체제, 그리고 각종 소프트웨어를 통해 컴퓨터 하드웨어를 다루게 된다. 협의의 운영체제(커널) - 좁은 의미 운영 체제의 핵심 부분으로 메모리에 상주하는 부분. 전공자로서 운영체제라고 하면 보통 좁은 의미의 운영체제를 의미한다. 광의의 운영체제 - 넓은 의미 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념. 광의의 운영체제에는 메모리에 상주하지 않는 별도의, 독립적인 프로그램이지만 운영체제의 범주에 포함시킨다. 운영체제의 목표 컴퓨터 시스템을 편리하게 사용할..
Operating-System Services 운영 체제는 프로그램과 사용자에게 프로그램과 서비스를 실행하기 위한 환경을 제공한다. 한 세트의 운영체제 서비스는 사용자에게 유용한 기능을 제공한다. 1. 사용자 인터페이스 User Interface(UI) 거의 모든 운영체제 서비스는 사용자 인터페이스를 가지고 있다. 이러한 것들은 Command-Line(CLI), Graphics User Interface(GUI), touch-screen, Batch등과 상이하다. 2. 프로그램 실행 Program execution 시스템은 정상적으로나 비정상적으로나(오류를 표시하면서) 반드시 메모리에 프로그램을 적재하고, 프로그램을 실행하고 종료할 수 있어야 한다. 3. 입출력 I/O operations 실행중인 프로그..
정의 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중개자 역할을 하는 프로그램 운영체제의 목표 사용자 프로그램을 실행하고 사용자 문제를 쉽게 해결한다. 컴퓨터 시스템을 사용하기 편리하게 만든다. UI 를 생각하면, command line으로 사용하는 것보다 UI를 사용하는 것이 더 편리하다. 컴퓨터 하드웨어를 효율적으로 사용한다. 역할 자원 관리 컴퓨터 시스템 자원 효율적 관리 자원 보호 프로그램이나 다른 사용자가 데이터를 삭제하거나 중요 파일에 접근하지 못하게 컴퓨터 자원들을 보호한다. 인터페이스 제공 하드웨어 인터페이스와 사용자 인터페이스를 제공하여 편리하게 사용하도록 지원한다. 목적 운영체제의 목적에는 처리능력 향상, 반환시간 단축, 사용 가능도 향상, 신뢰도 향상 등이 있다. 이러한 지표들은 운영체제..
디자인 패턴이란 디자인 패턴은 모듈의 세분화된 역할이나 모듈들 간의 인터페이스 구현 방식을 설계할 때 참조할 수 있는 전형적인 해결 방식을 말한다. 디자인 패턴을 통해 설계 문제, 해결 방법, 해결 방법을 언제 적용하며 그 결과는 무엇인지 등에 대해 알 수 있다. 또한 디자인 패턴은 한 패턴에 변형을 가하거나 어떠한 요구사항을 반영하면 다른 패턴으로 변형되는 특징이 있다. GoF 디자인 패턴 1995년 GoF(Gang of Four)라고 불리는 Erich Gamma, Richard Helm, Ralph Johnson, John Vissides가 처음으로 디자인 패턴을 구체화하였다. GoF의 디자인 패턴은 소프트웨어 공학에서 가장 많이 사용되는 디자인 패턴이다 목적에 따라 분류하여 생성패턴 5개, 구조 패..
프로세스(Process) 프로세스(process) 란 단순히 실행 중인 프로그램(program)이다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행중인 것을 말한다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원, 그리고 스레드로 구성된다. 스레드(Thread) 스레드(thread) 란, 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티 스레드 프로세스(multi-threaded process)라고 한다. 멀티 쓰레드 쓰레드가 둘 이상인 것을 말한다. 멀티 스레딩 컴퓨터는 여러 개의 스레드를 효과적으로 실행할 수 ..
요즘 동적 페이지 만드는 법에 대해 공부하고 있는데, 동적인 페이지를 만드는 데에 AJAX가 사용된다. 그래서 AJAX에 대해 공부하는 겸해서 동기와 비동기에 대해 알아보고자 한다. 이 때 동기와 비동기, 그리고 블록과 논블록의 개념이 같거나 비슷하다고 생각하는 사람들이 많아 함께 언급되는 경우가 많다. 따라서 블록과 논블록에 대해서도 함께 정리해보고자 한다. 동기와 비동기 동기와 비동기는 처리해야할 작업들을 어떠한 흐름으로 처리할 것인가에 대한 관점이다. 즉 호출되는 작업 완료 여부를 신경쓰는지에 따라, 함수 실행/리턴이 순차적인 흐름을 따르는지에 대한 여부가 관심사이다. 동기 (Synchronous) 동기란 각 참여자가 즉시(또는 가능한 한 즉시) 메시지를 수신(필요시 처리 및 회신)하는 실시간 통신..