라벨이 #운영체제인 게시물 표시

[운영체제] 안드로이드란?

이미지
[운영체제] 안드로이드란? 구글이 중심이 되어 개발하는 휴대 단말기용 플랫폼 일반적으로 안드로이드 애플리케이션의 네 가지 구성요소는 액티비티, 방송 수신자, 서비스, 콘텐츠 제공자입니다. 안드로이드는 구글에서 만든 스마트폰용 운영체제 입니다. 운영체제와 미들웨어, 사용자 인터페이스, 어플리케이션, MMS 서비스 등을 하나로 묶어 서비스를 제공하며 다양한 어플리케이션을 만들어 설치하면 실행될 수 있도록 구성된 어플리케이션 플랫폼이라고 볼 수 있습니다. 안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워크 관리 등 핵심 서비스는 리눅스(Linux)를 기반으로 제작 되었습니다. 개발자들이 자바 언어 로 응용 프로그램을 작성할 수 있게 하였으며, 컴파일된 바이트 코드를 구동할 수 있는 런타임 라이브러리를 제공합니다. 리눅스 커널 위에서 동작하며, 다양한 안드로이드 시스템 구성 요소에서 사용되는 C/C++ 라이브러리 들을 포함하고 있습니다. 구글은 안드로이드의 모든 소스 코드를 오픈 소스 라이센스인 아파치 v2 라이센스로 배포하고 있어 기업이나 사용자는 각자 안드로이드 프로그램을 독자적으로 개발하여 탑재할 수 있습니다. 출처 https://coding-factory.tistory.com/202

[운영체제] 세그먼트

이미지
[운영체제] 세그먼트 메모리 세그먼트 메모리 보호를 수행하는 가장 일반적인 방법 가운데 하나이다. 또 페이징이 있다. 세그먼트를 사용하는 컴퓨터 시스템에서 메모리 위치를 참조하는 명령어는 피연산자와 세그먼트와 그 세그먼트안의 오프셋을 증명하는 값을 포함하고 있다. 프로그램 메모리 세그먼트 컴파일러에 의해 자동적으로 프로그램이 프로세스에 올라 갈 때 세그먼트가 나뉘게 되는데, 주로 코드 영역, 데이터 영역, 스택(Stack)영역으로 나뉘게 된다. 데이터 메모리는 크게 코드 세그먼트 스택 세그먼트 데이터 세그먼트 힙 세그먼트 로 구분된다. 코드 세그먼트 소스파일의 코드가 할당되어 잡히는 메모리 영역이다. 이 부분에 변화가 있어선 안되기 때문에 기본적으로 쓰기가 금지 되어 있다. 스택 세그먼트 지역변수가 할당된다. 스택 구조로 쌓아 올려짐으로써 재귀호출이 가능해진다. 이 곳에서 호출된 변수들은 임시적인 성격을 가지게 되는데 이유는 스택 세그먼트에서 호출된 변수는 호출된 지역(함수)에서만 사용이 가능하기 때문이다. (이는 코딩을 할 때 같은 이름의 변수를 서로 다른 함수에서 따로 사용할 수 있는 이유와 같다.) 따라서 해당 함수가 종료되면 스택 세그먼트에 올라왔던 변수들도 함께 소멸 된다. 데이터 세그먼트 프로그램이 빌드 되면서 올라오는 전역변수, STATIC 변수, 일반상수, 문자열 등이 쓰인다. 따라서 어느 함수에서나 호출이 가능하다. 데이터 세그먼트에서 호출된 변수들은 프로그램이 시작과 함께 선언되며 프로그램이 종료될 때 소멸 된다. 호출되는 함수와 함께 시작하고 소멸되는 스택 세그먼트의 변수와 상반되는 개념이다. 힙 세그먼트 메모리의 동적 할당 으로 표시되어 있다 정적으로 밖에 할당되지 않는 변수들을 개발자가 필요한 만큼 동적으로 할당하여 사용할 수 있는 메로리 출처 https://luckyyowu.tistory.com/6 http://blog.na...

[운영체제] 스핀락(Spin Lock)이란?

[운영체제] 스핀락(Spin Lock)이란? Spin Lock은 이름이 뜻하는대로, 만약 다른 스레드가 lock을 소유하고 있다면 그 lock이 반환될 때까지 계속 확인하며 기다리는 것이다. '조금만 기다리면 바로 쓸 수 있는데 굳이 Context Switching으로 부하를 줄 필요가 있나?'라는 컨셉으로 개발된 것으로 Critical Section에 진입이 불가능할 때 컨텍스트 스위칭을 하지 않고 잠시 루프를 돌면서 재시도를 하는것을 말합니다. Lock-Unlock과정이 아주 짧아서 락하는 경우가 드문 경우 유용합니다. ( = 적절하게 크리티컬 섹션을 사용한 경우 ) 예를 들어 어떤 숫자를 단순히 +1해주는데 사용될 락이 있다고 생각해보자 이 경우는 거창하게 Context Switching을 하면서 구현할 필요가 없다. 잠깐 밖에서 값을 검사해보고 내가 사용가능하면 바로 처리 하도록 하는게 효율적이다. 이 개념이 '스핀 락' 개념이다. 그냥 단순히 적절한 시간동안 외부에서 for이나 while로 루프를 돌면서 락을 검사하고 처리하게 되는 것이다. 이 때 임계 영역은 굉장히 작거나 아주 빨리 처리가 가능할 경우 이런 락을 쓰게 된다. Spin Lock의 특성 Lock을 얻을 수 없다면, 계속해서 Lock을 확인하며 얻을 때까지 기다린다. 이른바 바쁘게 기다리는 busy waiting이다. 바쁘게 기다린다는 것은 무한 루프를 돌면서 최대한 다른 스레드에게 CPU를 양보하지 않는 것이다. Lock이 곧 사용가능해질 경우 Context Switching을 줄여 CPU의 부담을 덜어준다. 하지만, 만약 어떤 스레드가 Lock을 오랫동안 유지한다면 오히려 CPU 시간을 많이 소모할 가능성이 있다. 하나의 CPU나 하나의 코어만 있는 경우에는 유용하지 않다. 그 이유는 만약 다른 스레드가 Lock을 가지고 있고 그 스레드가 Lock을 풀어 주려면 싱글 CPU 사용률 100%를 만드는 상황이 발생하므...

[전자계산기구조] 스트로브(Strobe Pulse) & 핸드셰이킹(Handshaking)

[전자계산기구조] 스트로브(Strobe Pulse) & 핸드셰이킹(Handshaking) 비동기 데이터 전송 두 개의 독립적인 장치(ex : 기억장치, 입출력장치) 사이의 비동기적인 데이터 전송을 이루기 위해서는 데이터 전송시각을 알기 위한 제어 신호를 서로 교환하여 송수신 상태를 서로 맞춰야 한다. 동기를 맞추기 위한 제어 신호를 교환하는 방법에는 스트로브 펄스에 의한 방식과 핸드세이킹에 의한 방법이 있다. 스트로브 펄스(Strobe Pulse) 방식 데이터 버스와 한 개의 제어선을 이용 스트로브는 송신 장치나 수신 장치에 의하여 발생한다. 수신하는 장치에서 스트로브 펄스를 발생하여 송신부에게 데이터 전송을 요청합니다. 두 개의 독립적인 장치 사이의 비동기 적인 데이터 전송을 이루기 위해 전송시각을 알리는 제어 신호를 스트로브 신호라 하며, 한개의 제어선을 통해 상호 교환 수신 장치는 스트로브 펄스를 발생시켜 송신부로 하여금 데이터를 제공하도록 알린다. 메모리와 CPU 사이에서 정보를 교환할 때 사용 전송을 시작한 송신장치는 수신장치가 데이터를 받았는지를 알 수 없다. 핸드셰이킹(Handshaking) 방식 컴퓨터와 주변장치간에 Data 전송을 할 때 입,출력의 준비나 완료를 나타내는 신호(RDY, ADK)가 필요한 비동기식 병렬 입,출력 시스템 에 널리 쓰인다. 전송을 시작한 장치에 응답하는 제2의 제어 신호를 전송함으로써 스트로브 제어 방법보다는 높은 융통성과 신뢰성을 갖는다. 2~3개의 제어선을 이용 스풀링 버퍼링 출처 https://m.blog.naver.com/PostView.nhn?blogId=pusna25&logNo=100112226101&proxyReferer=https%3A%2F%2Fwww.google.com%2F

[운영체제] DMA(Direct Memory Access) & 입출력 처리 방식

이미지
[운영체제] DMA(Direct Memory Access) & 입출력 처리 방식 CPU를 대신하여 I/O장치와 Memory사이의 데이터전송을 담당하는 장치를 지칭 CPU의 개입 없이 주변장치(입출력장치)와 주기억장치와의 데이터 전송이 이루어지는 방법을 통칭 CPU와 주기억장치만이 시스템 버스에 접근할 수 있고 입출력장치는 DMA와 같은 입출력 제어기에 의해 시스템 버스에 접근할 수 있다. DMA(Direct Memory Access)의 특징 CPU의 개입 없이 주변장치와 주기억장치와의 데이터 직접 전송 프로그램 수행 중 입출력을 위한 인터럽트의 발생 횟수를 최소화하여 컴퓨터 시스템의 효율을 높임 CPU는 DMA와 상태정보 및 제어정보만을 주고 받음 속도가 빠른 디스크, 테이프 등에 사용됨 DMA는 기억장치 접근을 위해 CPU의 시스템 버스 사용권을 일시적으로 뺏는 사이클 스틸링(Cycle Stealing)을 수행한다. 시스템 버스에 대해 CPU보다 DMA의 우선순위가 높다. DMA제어기와 CPU가 시스템 버스를 공유한다. 실제 CPU가 Control하는 건 DMAC (DMA Controller)를 Control 해주는 과정을 의미합니다. 입출력 처리 방식의 종류 빠른 순위  채널에 의한 I/O 메모리 직접 접근 I/O(DMA) 인터럽트 처리에 의한 I/O 프로그램에 의한 I/O 프로그램에 의한 I/O CPU상에서 실행되는 프로그램에 의해 입출력이 직접 제어 CPU는 입출력 장치에 명령을 보낸 후 동작이 완료될 때까지 대기 CPU는 주기적으로 주변장치의 상태를 반복적으로 검사, 폴링 방식 CPU는 자원낭비 발생 인터럽트 처리에 의한 I/O 입출력 인터페이스가 주변장치의 상태를 검사하여 준비상태가 되면 인터럽트 신호를 발생하여 입출력 처리를 요구하는 방식 CPU는 그전에 수행되던 프로그램의 상태를 스택에 저장한 후 Context Switching과정을...

[전자계산기구조] 인터럽트(Interrupt)

이미지
[전자계산기구조] 인터럽트(Interrupt) 인터럽트는 컴퓨터 구조에서 CPU의 활동에 많은 영향을 끼치는 중요한 개념이다. 인터럽트 '끼어 들다', '중단시키다' 정도의 의미를 가진 말로 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것을 말한다. 입출력 장치 제어기에서 중앙처리장치로 보내는 신호 인터럽트가 발생하면 운영체제가 제어권을 받는다. 인터럽트 사이클 CPU가 어떤 프로그램을 순차적으로 수행하는 도중에 외부로부터 인터럽트 요구가 들어오게 되면, CPU는 원래의 프로그램 수행을 중단하고 요구된 인터럽트를 처리해주기 위한 프로그램을 먼저 수행한다. 인터럽트에 대한 처리가 끝나면 CPU는 원래의 프로그램으로 복귀(return)하여 그 수행을 계속한다.  인터럽트의 종류 인터럽트의 종류는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉠 수 있다. 외부 인터럽트(비동기) 전원 이상 인터럽트(Power fail interrupt) 말 그대로 정전, 파워 이상 등 기계 착오 인터럽트(Machine check interrupt) CPU의 기능적인 오류 외부 신호 인터럽트(External interrupt) 타이머에 의한 인터럽트 : Preemptive개념을 생각하면 된다. 자원이 할당된 시간이 다 끝난 경우 키보드로 인터럽트 키를 누른 경우 : 대표적으로 Control + Alt + Delete 비동기 인터럽트 외부장치로부터 인터럽트 요청이 있을 경우 : I/O인터럽트는 아니다. 다른 개념이다 입출력 인터럽트(I/O interrupt) 입출력장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우 입출력 데이터에 이상이 있는 경우 하드웨어적 인터럽트로 프린트나 디스크 저장 시에 입출력 채널 확인, 준비, 할당, 완료 시...

[운영체제] 벨레이디의 모순 (Beladys's Anomaly)

이미지
[운영체제] 벨레이디의 모순 (Beladys's Anomaly) 간단히 말해서 페이지 교체 알고리즘 중의 하나인 FIFO(First In First Out)에서, 원래 페이지 프레임의 개수를 늘리면 page fault발생이 감소 해야 하나, 오히려 늘어나는 경우 ex) 출처 https://m.blog.naver.com/PostView.nhn?blogId=cookatrice&logNo=50037414550&proxyReferer=https%3A%2F%2Fwww.google.com%2F

[운영체제] TLB(Translation Lookaside Buffer)

이미지
[운영체제] TLB(Translation Lookaside Buffer) 가상메모리의 주소 전환을 효율적으로 하기 위해 일종의 page table의 cache(캐시)라고 볼 수 있다. 페이지 테이블은 메인 메모리에 저장되기 때문에, 프로그램에 의한 모든 메모리 접근은 최소 두 번 필요하게 된다. 1. 실제 주소를 얻기 위한 메모리 주소 접근 (cpu로 부터 생성된 가상주소를 메모리에 있는 page table을 통해 실제주소로 변환시킨다.) 2. 데이터를 얻기 위한 또 한번의 접근 TLB는 페이지 테이블에 있는 가상 주소 - 실제 주소 사상의 부분집합만을 포함한다. TLB는 가상기억장치에 있어서, 사용한 후 바로 가상 기억 페이지 번호(가상 주소)와 거기에 대응하는 실페이지 번호(실주소)를 격납해 주는 일종의 캐시 기억 장치이다. 명령이 발생하는 가상 주소의 사용에 있어 지역성을 이용하여 대부분의 가상 주소에서 실주소로의 변환 을 TLB를 참조하는것만으로 수행할 수 있다. 출처 https://m.blog.naver.com/PostView.nhn?blogId=xowns4817&logNo=221182043348&proxyReferer=https%3A%2F%2Fwww.google.com%2F

[운영체제] 채널이란?

[운영체제] 채널이란? 입출력만을 담당하는 소형 컴퓨터로 간단한 명령 구조와 레지스터를 가지고 있으며 입출력 장치와 통신하기 위한 간단한 장치로 구성 되어있다. 즉, 소형 CPU 출처 https://www.youtube.com/watch?v=w_M7To_N_jY

[운영체제] SRAM과 DRAM의 차이

이미지
[운영체제] SRAM과 DRAM의 차이 SRAM Static RAM 정적 메모리 전원 공급이 되는 동안은 기록된 내용이 지워지지 않기 때문에 재 충전(Refresh)가 필요 없다. 가격이 비싸다는 단점이 있다. 접근 속도가 빨라 캐시 메모리 로 사용된다. 구조가 복잡하고 소비전력이 많이 필요하다. 전원이 꺼지면 저장된 자료를 계속 보존할 수 없는 기억장치이다. DRAM Dynamic RAM 동적 메모리 전원이 계속 공급되더라도 주기적으로 재충전 되어야 기억된 내용을 유지할 수 있다. 회로가 비교적 간단하고 가격이 저렴하다. 집적도가 높기 때문에 대용량의 기억장치에 주로 사용된다. 집적도가 높다 : 같은 용량이면 더 많은 데이터를 저장가능. DRAM이나 SRAM은 전원이 꺼지면 자료를 계속 보존할 수 없다. DRAM은 충전기 캐패시터에 전하를 저장하는 방식으로 2진 데이터를 저장한다. 충전기에 전하가 존재하는지에 따라 2진수의 0과 1로 구분한다. 캐패시터에 충전된 전하는 시간이 지남에 따라 조금씩 방전되어 기억된 정보가 없어질 수 있다. SRAM과 DRAM의 비교 출처 https://www.youtube.com/watch?v=gLiOkK5dq_M

[운영체제] 페이지 세그먼테이션 기법

이미지
[운영체제] 페이지 세그먼테이션 기법 page기법과 segmentation기법 구분 고정분할 할당방법, 가변분할 할당방법, 단일 프로그래밍 할당 기법 등은 주기억장치를 연속적으로 할당하는 방법이지만 세그먼트 기법 과 페이징 기법 은  불연속적 으로 할당된다. 세그먼테이션 기법의 특징 세그먼테이션 기법 세그먼테이션 기법은 블록(Block)이  가변적 이다. 페이지 프레임처럼 주기억장치의 구분하지 않고 주기억장치 전체를 비연속적 으로 할당 받아 사용한다. 세그먼테이션 기법을 사용하는 가장 큰 이유는 메모리를 효율적으로 관리 하기 위해 사용된다. 여러 개로 분리된 세그먼트가 주기억장치를 차지할 수 있도록 해주어야 하며, 각 세그먼트는  같은 크기일 필요는 없으나 연결된 기억장소 로 구성되어야 한다. 세그멘테이션 기법에서는  기억장치 보호키 가 필요하다.(A,B,C 프로그램을 구분하기 위해) 페이징 기법에 비해 물리적 개념보다는  논리적 이라는 장점을 가진다. 세그먼트의 길이(크기)가 모두 다르기 때문에 세그먼트 길이에 맞는 주기억장치의 영역을 할당하지 못하면 다른 프로그램 영역을 침범하게 되는 세그먼트 오버플로우 결함 (Segment Overflow Fault)이 발생한다. 외부 단편화 만 발생한다. 주기적으로 압축 이 필요하다. 페이지 세그먼테이션(Segmentation) 기법 페이지와 세그먼트 기법을 혼용하는 방식이다. 하나의 세그먼트를 여러 개의 동일한 크기의 페이지로 구분하여 사용할 수 있다. 주소 지정 블록은 세그먼트 번호와 페이지 번호가 존재한다. 다음과 같이 6개의 세그먼트로 구분되며, 각 세그먼트의 크기는 16K, 20K, 50K, 12K, 10K, 30K이다. 1번째 세그먼트는 16K이므로 4개의 페이지로 구분하면 4K용량으로 4개의 페이지로 분할할 수 있다. 출처 https://www.youtube.com/watch?v=u0-...

[운영체제] 분산시스템 투명성(Transparency)

[운영체제] 분산시스템 투명성(Transparency) 네트워크 상에 분산된 컴퓨팅 자원을 여러 다른 컴퓨터에서 이용하는 기술로써 중앙집중형과 달리 네트워크 상에 여러 컴퓨팅 플랫폼에 프로세스를 분산시키고, 분산된 프로세스를 논리적으로 마치 하나의 프로세스처럼 수행하도록 하는 기술 분산시스템 투명성 위치 투명성 사용자는 각 컴퓨터들이 어느 곳에 위치하는지 몰라도 자원을 사용할 수 있다. 하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요가 없다. 이주 투명성 자원 이동에 제한이 없다. 자원들이 한 곳에서 다른 곳으로 이동하면 자원들의 이름이 자동으로 바뀌지 않는다. 복제 투명성 사용자에게 통지할 필요 없이 시스템 안에 자원들의 부가적인 복사를 자유롭게 할 수 있다. 병행(동시) 투명성 다중 사용자들이 자원들을 자동으로 공유할 수 있다. 자원의 위치를 모르더라도 사용자들이 자원을 병행하여 처리 및 공유한다. 다중의 사용자가 자동적으로 자원을 공유하고 사용자의 인식이 없어도 병렬적으로 수행한다. 사용자나 응용 프로그램이 공유 데이터나 객체에 대해 상호 간섭 없이 동시에 접속하여 업무를 수행할 수 있어야 한다. 접근 투명성 각 프로세서의 로그인처럼 지역이나 원격 자원에 접근할 수 있다. 성능 투명성 여러 부하에 대해 성능을 증가시키기 위해 시스템을 재 구성할 수 있다. 규모 투명성 시스템이나 응용프로그램이 시스템 구조나 응용 알고리즘에 대한 변경 없이 규모에 따라 확장 가능하다. 고장(장애) 투명성 분산 시스템 내의 구성 요소(트랜잭션, DBMS, 네트워크, 컴퓨터)가 장애를 일으켜도 영속성을 제공할 수 있다. 출처 https://ryufree.tistory.com/69

[운영체제] 문맥교환(Context Switching)

이미지
[운영체제] 문맥교환(Context Switching) 다중 프로그래밍 시스템에서 운영체제에 의하여 CPU가 할당되는 프로세스를 변경하기 위하여 현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고, 앞으로 실행될 프로세스의 상태 정보를 설정한 다음에 CPU를 할당하여 실행되도록 하는 작업이다. 인터럽트가 발생할 경우, 진행 중인 프로그램의 재개(resume)에 필요한 레지스터 문맥(register context)을 저장한다. CPU에서는 한가지 프로그램만 실행 가능하므로 PCB테이블에 인터럽트 된 프로세스를 저장 시간할당량에 따른 문맥 교환수, 인터럽트 횟수, 오버헤드 여러 개의 프로세스가 CPU를 차지하는 시간 간격을 시간할당량이라고 한다. 시간할당량이 작으면 작을수록 여러 개의 프로세스가 동시에 수행되는 느낌을 가질 수 있지만 그에 따른 문맥 교환수, 인터럽트 횟수, 오버헤드는 증가한다. 출처 https://www.youtube.com/watch?v=R3Me6tIh7mw

[운영체제]PCB

이미지
[운영체제]PCB PCB는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 저장장소. 즉, 여러 개의 프로세스를 수행하는 다중 프로그래밍 환경 하에서 각 프로세스를 구분하기 위한 프로세스 제어 블록 이다. PCB 테이블 은 프로세스들의 현재 상태를 기록한 정보 테이블이며, 각 프로세스들의 주기억장치에 적재된 기억장치 위치 혹은 포인터(100, 200, 300, 400)와 식별자(식별자:1, 식별자:2, ...) 등이 PCB 항목으로 기록된다. 병원의 환자를 효과적으로 관리하기 위해서는 환자의 정보를 체계적으로 관리해야 한다. 운영체제에서는 관리 기록부 전체를 PCB 테이블이라고 한다. 환자 기록부에는 환자 번호, 현재 상태, 현재 치료 중인 위치 등을 파악해야한다. 운영체제에서는 환자 기록부에 존재하는 항목을 PCB의 항목이라고 한다. PCB 항목 프로세스 식별자 프로세스 현재 상태 현재 어느 정도? 프로그램 카운터(계수기) 지금 어디 하다가 멈췄니? 프로세스 우선순위 프로세스가 적재된 기억장치 부분을 가리키는 포인터 프로세스에 할당된 자원을 가리키는 포인터 중앙처리장치(CPU, 처리기) 레지스터 정보 보관? 변화? CPU의 각종 레지스터 상태를 가리키는 포인터 보관?변화? 계정 정보(시간 할당량) 5분씩? 10분씩? 기억장치 관리 정보 입출력 정보 부모 프로세스를 가리키는 포인터 부모가 올라가서 필요할때만 자식을 부르는 것 자식 프로세스를 가리키는 포인터 프로세스 생성 과정 새로운 프로세스를 위한 프로세스 식별자를 할당한다. 새로운 프로세스를 한 주소 공간과 프로세스 제어블록(Process Control Block)을 할당한다. 새로운 프로세스의 프로세스 제어블록을 초기화한다. 새로운 프로세스를 스케줄링 큐의 준비 또는 준비/보류 리스트에 연결한다. 출처 https://www.youtube.com/watch?v=hPzFNO_mGpk...

[운영체제] 스풀링 & 버퍼링

이미지
[운영체제] 스풀링 & 버퍼링 공통점 : 버퍼링과 스풀링 모두 CPU의 처리속도와 입출력 장치의 속도 차이를 보완하기 위한 방법 스풀링 스풀링은 디스크의 일부를 스풀공간이라 부르는 매우 큰 버퍼처럼 사용하는 방식으로 CPU와 입출력장치 사이의 속도 차이를 해소하기 위해 사용 디스크에 수록된 파일을 미리 입력 장치로부터 읽어들이고, 출력장치가 그것을 받을 수 있을 때까지 일시적으로 저장함으로써, 한 작업의 출력을 프린터를 통해서 인쇄하는 동안에 다른 작업의 입력을 읽어들일 수 있으며, 이 시간 동안 또 다른 작업이 수행 될 수 있다. 다중작업 즉, 많은 작업의 계산과 입출력을 중복할 수 있다. 작업 풀(Job Pool) 이라는 중요한 데이터 구조를 제공하는데, 이는 디스크에 읽혀져 실행을 위해 대기하고 있는 여러 개의 작업을 수행할 수 있도록 준비해 주고, 디스크에 저장된 작업들은 프로세서 이용률을 향상시키기 위해 OS가 다음에 수행할 작업을 선택할 수 있도록 해준다. 스풀 : 일정한 기억장소로 하드디스크의 공간을 스풀이라고 함 버퍼링 빠른 CPU와 상대적으로 속도가 느린 입출력장치 사이에 효율을 높이기 위해서 사용 CPU와 입출력 장치를 항상 활용하고자 함 주기억장치 내에 버퍼를 둠으로써 입력시에는 CPU가 버퍼의 내용을 가져다 쓰고 입출력장치가 버퍼에 내용을 기록 단일작업 출력시에는 CPU가 연산된 결과를 버퍼에 저장하고, 출력장치는 버퍼의 내용을 꺼내서 출력 한 레코드가 읽혀 CPU가 그것에 대해 연산을 시작함과 동시에 입출력 장치는 곧 다음에 필요한 레코드를 미리 읽어서 주기억장치에 저장함으로써 CPU가 필요로 하는 레코드를 기다림 없이 전달해 줄 수 있음. 주기억 장치의 일정 부분을 버퍼로 사용 버퍼 : 파일로부터 데이터 전송을 하여 저장하기 위한 주기억장치 공간으로 비교적 빠른 CPU와 느린 보조기억장치 사이의 완충 역할 추가 용어 정리 가상기억장치(Virtual ...

[운영체제] 디스크 공간 할당 방법

이미지
[운영체제] 디스크 공간 할당 방법 파일이 하드디스크에 어떻게 저장되는지에 따라~~ 디스크 공간 할당은 파일을 효율적으로 저장하고 사용하기 위해 파일을 기억공간에 어떻게 할당할 것인가를 결정하는 방법이다. 파일을 디스크 공간에 할당하는 방법에는 연속 할당 방법 과 불연속 할당 방법 이 있으며, 불연속 할당 방법에는 섹터 단위 할당과 블록 단위 할당이 있다. 1. 연속할당(Continuous Allocation) 파일을 디스크의 연속된 기억공간에 할당하는 방법으로, 생성되는 파일 크기만큼의 공간이 있어야 한다. 논리적으로 연속된 레코드들이 물리적으로 인접한 공간에 저장되기 때문에 접근 시간이 빠르다. but) 낭비하는 공간이 너~~무 많다 디렉터리는 파일의 시작 주소와 길이에 대한 정보만 가지고 있으므로 디렉터리가 단순하고, 관리 및 구현이 용이하다. 파일 크기에 알맞은 연속 공간이 없을 경우 파일이 생성되지 않는다. 파일의 생성과 삭제가 반복되면서 단편화가 발생 한다. 단편화를 줄이기 위해 재배치에 의한 주기적인 압축(Compaction) 이 필요하다. 반드시 해야 함!!!!! 파일의 크기가 시간에 따라 변경될 경우 구현하기가 어렵다. 가상기억장치로 사용할 수 없다. 다중 프로그래밍에 사용하기 어렵다. 2. 불연속 할당(Non-Continuous Allocation) 불연속 할당에는 섹터 단위 할당 과 블록 단위 할당 방법이 있다.(하나의 파일은 연결고리를 만들어 줘야 함) 섹터 단위 할당 섹터 단위 할당은 하나의 파일이 디스크의 섹터 단위로 분산되어 할당되는 방법으로 하나의 파일에 속하는 섹터들이 연결 리스트(Linked List)로 구성되어 있다. 하나의 파일에 속하는 각각의 섹터는 연결을 위해 다음 내용이 있는 곳의 포인터를 가지고 있다. 레코드를 검색할 경우 파일이 속한 레코드를 순차적으로 검색해야 하므로 탐색 시간이 오래 걸리고, 직접 접근이 불가능 하다. 각 ...

[운영체제] 프로세스의 상태 전이

이미지
[운영체제] 프로세스의 상태 전이 Process의 상태 전이 다중 프로그래밍 환경이니까 프로세스의 상태 전이가 필요 in 주기억장치(RAM) 안에서 프로세스 생성하는 과정 새로운 프로세스를 위한 프로세스 식별자를 할당한다. 새로운 프로세스를 위한 주소 공간과 프로세스 제어블록(process control block)을 할당한다. 새로운 프로세스의 프로세스 제어블록을 초기화한다. 새로운 프로세스를 스케줄링 큐의 준비 또는 준비/보류 리스트에 연결한다. 프로세스 상태 Create(생성) 사용자가 요청한 작업이 커널에 등록되어 커널 공간에 PCB 등이 만들어진 상태 프로세스가 생성되는 단계 Ready(준비) 프로세스가 생성되어 주기억장치에 적재가 되고, 실행하는데 필요한 자원을 모두 얻은 상태 Running (실행) 프로세스가 CPU를 점유하여 실행중인 상태 Terminated  프로세스가 종료되는 상태 Asleep(대기) 처리 소도가 느린 I/O(입/출력) 작업 중인 상태 주기억장치에 적재는 되었지만 필요한 자원을 얻지 못한 상태 Suspended Ready  필요한 자원은 모두 얻었지만 주기억장치에 적재되지 못한 상태 Suspended Blocked 필요한 자원도 없고 주기억장치에도 절재되지 못한 상태 ex) 시디(필요한 자원)가 없어서 출력을 못함 상태 전이 Dispatch  준비 -> 실행 프로세스 스케줄러에 의해 결정된 우선순위에 따라 프로세스가 CPU를 점유하게 되는 상태 Time out 실행 -> 준비 프로세스가 실행중이다가 제한된 시간을 다 소비하여 CPU 점유를 빼앗기는 상태 Block 실행중이던 프로세스가 외부 요인에 의해서 자원을 빼앗기는 상태 Wake up  프로세스가 자원을 할당받는 상태 Swap in 프로세스가 주기억장치에...

[운영체제] 기억장치 할당 방법(가변분할, 고정분할, 오베레이)

[운영체제] 기억장치 할당 방법(가변분할, 고정분할, 오베레이) 주 기억장치 할당 방법 연속할당 기법 : 단일 부할 할당, 다중 분할 할당 단일 분할 할당 : 주기억장치를 운영체제 영역과 사용자 영역으로 나누어, 한 순간에 한 명의 사용자만 이 사용자 영역을 사용  가장 단순, 초기 운영체제에 사용 오버레이(Overlay) : 하나의 프로그램을 여러 개의 조각으로 분할 한 후 필요한 조각을 차례로 적재 주기억장치보다 크기가 큰 프로그램을 실행하기 위한 기법 스와핑(Swapping) : 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체 swap in : 보조 -> 주 (주기억장치로 들어오는 것) swap out : 주 -> 보조 (쫓겨나는 것) 다중 분할 할당 : 고정 분할 할당(MFT), 가변 분할 할당(MVT) 고정 분할 할당(정적 할당) : 프로그램 할당 전 운영체제가 주기억장치의 사용자영역을 고정된 크기로 분할하고 각 영역에 준비된 프로그램을 할당하여 수행 초기의 다중프로그래밍을 위해 사용 가변 분할 할당(동적 할당) : 프로그램을 적재하면서 필요한 만큼의 크기로 영역을 분할 주기억장치 효율 증가, 다중프로그래밍 정도 증가 분산 할당 기법 : 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당 페이징  프로그램을 동일한 크기로 나누어(페이지라고 함) 이것을 블록으로 사용 세그먼테이션  프로그램을 가변적인 크기로 나누어(세그먼트라 함) 이것을 블록으로 사용 // 동일 크기로 분할하면 페이징, 가변 크기로 분할하면 세그먼테이션! 출처 https://storyofsol.tistory.com/96

[운영체제] 제어, 처리 프로그램

[운영체제] 제어, 처리 프로그램 제어 프로그램  - 시스템 작동감시, 순서지정, 데이터 관리등의 역할을 수행하는 프로그램 감시 프로그램(Supervisor) OS의 일부로 주기억 장치 상에 상주하고 있는 프로그램 하드웨어가 최대한 작동되도록 시스템을 감시하는 것 작업 제어 프로그램(Job Control Program) 연속 처리를 위한 스케줄 및 시스템 자원 할당 등을 담당 각종 처리 프로그램의 실행과 기억 장소나 데이터 제어 또는 연속 처리 작업의 스케줄 등을 감시하는 기능을 수행 데이터 관리 프로그램 주기억 보조기억장치 사이의  자료전송, 파일의 조작 입출력 자료와 프로그램간의 논리적 연결 등 처리할 수 있도록 관리 처리 프로그램 - 제어 프로그램의 지시를 받아 사용자가 요구한 문제를 해결하기 위한 프로그램 서비스 프로그램(Service Program) 효율성을 위해 사용 빈도가 높은 프로그램 문제 프로그램(Problem Program) 특정 업무 해결을 위해 사용자가 작성한 프로그램 언어 번역 프로그램(Language Translator Program) 어셈블러, 컴파일러, 인터프리터 출처 https://m.blog.naver.com/PostView.nhn?blogId=leejy8036&logNo=220979465754&categoryNo=18&proxyReferer=https%3A%2F%2Fwww.google.com%2F

[운영체제] 파일의 구조(순차 파일, 직접 파일, 색인 순차 파일)

이미지
[운영체제] 파일의 구조(순차 파일, 직접 파일, 색인 순차 파일) 파일의 구조는 파일을 구성하는 레코드들이 보조기억자치에 편성되는 방식 을 의미함 편성방식에 따라 순차 파일, 색인 순차 파일, 랜덤 파일, 분할파일이 있다. 파일 편성방법에 따라 파일 접근 방법을 분류할 수 있으므로 파일 접근 방법 이라고도 한다. 순차 파일(Sequential File, 순서 파일) 순차 파일은 레코드를 논리적인 처리 순서에 따라 연속된 물리적 공간으로 기록하는 것을 의미한다. 급여 업무처럼 전체 자료를 처리 대상으로 일괄 처리하는 업무에 사용된다. 대화식 처리보다 일괄 처리에 적합한 구조이다. 장점 파일의 구성이 용이하고, 순차적으로 읽을 수 있으므로 기억공간의 이용 효율이 높다 레코드만 저장하고 북합적인 정보는 저장하지 않으므로 기억공간의 낭비를 방지할 수 있다. 물리적으로 연속된 공간에 저장되므로 접근 속도가 빠르다 어떠한 기억 매체에서도 실현 가능하다 단점 파일에 새로운 레코드를 삽입하거나 삭제하는 경우 파일 전체를 복사한 후 수행해야 하므로 시간이 많이 걸린다. 파일의 특정 레코드를 검색하려면 순차적으로 모든 파일을 비교하면서 검색해야 하므로 검색 효율이 낮다. 직접 파일(Direct File) 파일을 구성하는 레코드를 임의의 물리적 저장공간에 기록하는 것으로, 직접 접근 방식(DAM; Direct Access Method)이라고도 한다. 레코드의 특정 기준으로 키가 할당되며, 해싱 함수(Hashing Function) 를 이용하여 키에 대한 보조기억장치의 물리적 상대 레코드 주소를 계산한 후 해당하는 주소에 레코드를 저장한다. 레코드는 해싱 함수에 의해 계산된 물리적 주소를 통해 접근할 수 있다. 입의 접근이 가능한 자기 디스크나 자기 드럼에 사용한다. 장점 직접 접근 기억장치(DASD)의 물리적 주소를 통하여 파일의 각 레코드에 직접 접근하거나 기록할 수 있으며, 접근 및 기록의 ...