728x90

프로세스 10

24.08.14 CS, Dev

24.08.14 CS, DevCS멀티 프로세스 VS 멀티 스레드멀티 프로세스와 멀티 스레드는 한 어플리케이션에 대한 처리방식이라고 보면 된다. 단순히 프로그램을 여러개 띄워놓는 것이 멀티 프로세스가 아니라 이 둘은 언제 어느때에 어떤 방식으로 처리하느냐에 따라 다른 것으로 이해해야 한다.멀티 프로세스멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술을 말한다. 보통 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러개의 프로세스를 생성하는 것이다.멀티 프로세스 내부를 보면, 하나의 부모 프로세스가 여러 개의 자식 프로세스를 생성함으로서 다중 프로세스를 구성하는 구조이다. 한 프로세스는 실행되는 도중 프..

프로세스 & 스레드

프로세스 & 스레드프로세스 : 프로그램을 메모리 상에서 실행중인 작업스레드 : 프로세스 안에서 실행되는 여러 흐름의 단위기본적으로 프로세스마다 최소 1개의 스레드를 소유하고 있다.(메인 스레드 포함)주소 공간프로세스는 각각 별도의 주소공간을 할당한다.(독립적)Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)Data : 전역변수, 정적변수, 배열 등초기화 된 데이터는 data 영역에 저장된다.초기화 되지 않은 데이터는 bss 영역에 저장된다.Heap : 동적 할당 시 사용한다.(new(), malloc() 등)Stack : 지역변수, 매개변수, 리턴 값(임시 메모리 영역)스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유한다.하나의 프로세스가 생성될 떄, 기본적으로 하나의 스레드가 ..

Computer/CS 2024.06.28

24.06.28 CS

CS운영체제(OS, Operationg System)하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다.운영체제의 역할프로세스 관리프로세스, 스레드스케줄링동기화IPC 통신저장장치 관리메모리 관리가상 메모리파일 시스템네트워킹TCP/IP기타 프로토콜사용자 관리계정 관리접근권한 관리디바이스 드라이버순차접근 장치임의접근 장치네트워크 장치1. 프로세스 관리운영체제에서 작동하는 응용 프로그램을 관리하는 기능이다.현재 CPU를 점유해야 할 프로세스를 결정하고, 실제로 CPU를 프로세스에..

운영체제 11. 주소변환의 원리

운영체제 11. 주소변환의 원리 메모리 가상화는 가상화를 제공하는 동시에 효율성과 제어 모두를 추구한다. 효율성을 높이려면 하드웨어 지원을 활용할 수 밖에 없다. 제어는 응용 프로그램이 자기 자신의 메모리 이외에는 다른 메모리에 접근하지 못한다는 것을 운영체제가 보장하는 것을 의미한다. 유연성 측면에서 프로그래머가 원하는대로 주소공간을 사용하고 프로그래밍 하기 쉬운 시스템을 만들기를 원한다. 주소변환(Address translation)을 통해 하드웨어는 명령어 반입, 탑재, 저장 등의 가상주소를 정보가 실제 존재하는 물리주소로 변환한다. 프로그램의 모든 메모리 참조를 실제 메모리 위치로 재지정하기 위하여 하드웨어가 주소를 변환한다. 운영체제는 메모리의 빈 공간과 사용중인 공간을 항상 알고 있어야 하고,..

책/운영체제 2024.03.09

데드락(Dead Lock)/교착상태

데드락(Dead Lock)/교착상태 두 개 이상의 프로세스나 쓰레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태이다. 무한히 다음 자원을 기다리게 되는 상태를 말한다. 시스템 적으로 한정된 자원을 여러곳에서 사용하려고 할 때 발생한다 데드락의 발생조건 4가지 모두 성립해야 데드락 발생(하나라도 성립하지 않으면 데드락 문제 해결 가능하다.) 상호 배제(Mutual exclusion) 자원은 한 번에 한 프로세스만 사용할 수 있다. 점유 대기(Hold and Wait) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 한다. 비선점(No Preemption) 다른 프로세스에 할당된 자원은 사용이 끝날때까지 강제..

Computer/CS 2024.03.02

문맥교환(Context Switching)

문맥교환(Context Switching) 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기위해, 이전의 프로세스의 상태(문맥)을 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다. 이때 한 프로세스의 문맥은 그 프로세스의 프로세스 제어블록(PCB)에 기록되어 있다. PCB(Process Control Block) 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스 마다 유지하는 정보들을 담는 커널 내 자료구조로 커널 주소 공간의 data 영역에 존재한다. PCB에 저장되는 내용들 Process 상태 : CPU를 할당해도 되는지 여부를 결정한다. PC 값 : 다음에 수행할 명령어를 가리킨다. CPU Register : CPU연산을 위해 현 시점에 레지스터..

Computer/CS 2024.03.01

운영체제 4. 제한적 직접 실행 원리(Limited Direct Execution)

3. 제한적 직접 실행 원리(Limited Direct Execution) CPU를 가상화하기 위해서 운영체제는 여러 작업들이 동시에 실행되는 것처럼 보이도록 물리적인 CPU를 공유한다. 이러한 가상화 기법을 구현하기 위해서는 두 가지 문제를 해결해야 한다. 성능저하 제어문제 제어권을 유지하면서 성능 저하가 없도록 하는 것이 운영체제를 구축하는데 핵심적인 도전 과제이다. 3.1 기본원리 : 제한적 직접 실행 운영체제 개발자들은 프로그램을 빠르게 실행하기 위하여 제한적 직접 실행이라는 기법을 개발했다. 운영체제가 프로그램을 실행하기 시작할 때 프로세스 목록에 해당 프로세스 항목을 만들고 메모리를 할당하면 프로그램 코드를 디스크에서 탑재하고 진입점을 찾아 그 지점으로 분기하여 사용자 코드를 실행하기 시작한다..

책/운영체제 2024.03.01

운영체제 3. 프로세스 API

3. 프로세스 API 3.1 fork() 시스템콜 프로세스 생성에 fork() 시스템 콜이 사용된다. 자식 프로세스는 부모 프로세스와 완전히 동일하지는 않다. 자식 프로세스는 자신의 주소공간, 레지스터, PC값을 갖는다 매우 중요한 차이점이 있다. fork() t시스템콜의 반환값이 서로 다르다. fork()로 부터 부모 프로세스는 생성된 자식 프로세스의 PID를 반환 받고, 자식 프로세스는 0을 반환 받는다. CPU 스케줄러는 실행할 프로세스를 선택한다. 3.2 wait() 시스템콜 wait() 시스템콜은 자식 프로세스 종료 시점까지 자신의 실행을 잠시 중지 시킨다. 3.3 exec() 시스템콜 자기 자신이 아닌 다른 프로그램을 실행해야 할 때 사용한다. 실행파일의 이름과 약간의 인자가 주어지면 해당 실..

책/운영체제 2024.02.29

운영체제 2. 프로세스

2. 프로세스 프로세스는 실행 중인 프로그램으로 정의한다. 운영체제는 CPU를 가상화시켜 환상을 만들어 낸다. 시분할(time sharing)이라고 불리는 이 기법은 원하는 수 만큼 프로세스를 동시에 실행 할 수 있게 한다. 시분할 기법은 CPU를 공유하기 때문에 각 프로세스의 성능은 낮아진다. 운영체제의 지능은 정책(Policy)의 형태로 표현된다. 정책이란 운영체제에서 어떤 결정을 내리는데 사용되는 알고리즘이다. 다수의 실행 가능한 프로그램이 있을 때 운영체제의 스케줄링 정책(Scheduling Policy)이 이러한 결정을 내린다. 2.1 프로세스의 개념 운영체제는 실행 중인 프로그램의 개념을 제공하는데, 이를 프로세스라 한다. 프로세스의 구성요소를 이해하기 위해 하드웨어 상태(machine sta..

책/운영체제 2024.02.29

CSAPP 12-12.3

CSAPP 12. 동시성 프로그램 논리적 제어흐름은 이들이 시간적으로 중첩되면 동시적이다. 이와 같은 현상을 동시성이라고 한다. 응용수준 동시성은 다양한 경우 유용하다. 느린 I/O 디바이스 접근하기 : 응용프로그램은 유용한 작업을 I/O요청과 겹치게 한다. 사람들과 상호 작용하기 : 사용자가 어떤 동작을 요청할 때 마다, 이 동작을 수행하기 위해 별도의 동시성의 논리 흐름이 생성된다. 작업을 지연시켜서 시간지연 줄이기 : 다른 동작을 지연시키고 이들을 동시에 수행해서 특정 독작의 시간 지연을 축소하기 위해 동시성을 이용한다 다수의 네트워크 클라이언트 처리 : 클라이언트마다 별도의 논리흐름을 생성하는 동시성 서버 멀티코어 머신에서 병렬로 계산하기 동시성 프로그램을 만들기 위한 세 개의 기본 접근방법 프로..

책/CSAPP 2024.02.19
728x90