본문 바로가기
  • 저희는 평생 개발할 운명이걸랑요

Tech.log/운영체제5

[Thread-safe] Thread-safe 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. ex)하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다. Thread-safe를 지키기 위한 방법 1. Re-entrancy 어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바로 주어져야 한다. 2. Thread-local storage 공유 자원의 사용을 최대한 줄여 각각의 스레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막.. 2021. 5. 22.
[프로세스와 스레드의 차이] 프로세스와 스레드 프로그램: 파일이 저장장치에 저장되어 있지만 메모리에 올라가 있지 않은 정적 상태이다. 프로세스 : 운영체제로 부터 자원을 할당받은 작업의 단위 스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름 단위 프로그램 → 프로세스 정적인 파일인 프로그램(.exe)을 자의든 타의든 실행하게 되면 메모리에 올라가 프로세스 상태가 된다. 프로세스 → 스레드 과거에는 프로그램을 실행할때는 프로세스가 하나였다. 하지만 프로그램이 복잡해지고 프로세스 하나만으로 실행하기에 벅차다. 운영체제는 프로세스마다 할당된 메모리내의 정보만 접근할수 있었기때문에 이를 벗어나는 정보를 접근하면 오류가 발생했다.프로세스와는 다른 더 작은 실행 단위 개념이 요구 되었고 이것이 스레드다. 스레드는 프로세스와 다르게 스레드.. 2021. 5. 19.
[시스템 구조와 프로그램의 실행_2] 동기식 입출력(synchronous I/O) - I/O 요청후 입출력이 완료 된 후에야 제어가 사용자 프로그램으로 넘어감 - 구현 방법1 I/O가 끝날때 까지 CPU를 낭비시킴 매 시점 마다 I/O만 일어날 수 있다. - 구현 방법2 I/O가 완료 될때 까지 프로그램에서 CPU를 빼았음 I/O처리를 기다리는 줄에 프로그램 줄을 세움 다른 프로그램에게 CPU를 줌 비동기식 입출력(asynchronous I/O) - I/O 요청후 입출력이 완료를 기다리지 않고 제어가 사용자 프로그램으로 넘어감 두 경우 모두 종료 될 때 인터럽트를 통해 알린다. DMA(Direct Memory Access) - 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해서 사용한다. - CPU의 중재 없이 device contr.. 2021. 4. 29.
[시스템 구조와 프로그램의 실행] 컴퓨터 시스템 구조 interrupt: 인터럽트 당한 시점의 레지스터와 program counter을 저장한후 , CPU의 제어를 인터럽트 처리 후로 넘긴다. 넓은 의미의 인터럽트:하드웨어가 발생시킨 인터럽트 소프트웨어의 인터럽트: 프로그램 오류, 프로그램이 커널 함수 호출(System call)등에 의한 이터럽트 메모리 :CPU의 작업 공간, 매 순간 기계어를 읽는다. I/O device controller: 해당 I/O장치 유형을 관리하는 일종의 작은 CPU이다. 제어 정보를 위해 contorl register, status register을 가진다. I/O동작이 끝났을때 interrupt로 CPU에 알린다. CPU:메모리에 쌓인 instructs를 읽고 실행한다.만일 Controller나 timer.. 2021. 4. 28.