본문 바로가기

CS/OS11

[OS] 공유 자원 접근 문제 공유 데이터의 동시 접근은 데이터의 불일치를 발생시킬 수 있다. Race Condition Race Condition이란 두 개 이상의 concurrent한 프로세스(혹은 스레드)들이 하나의 공유 자원에 접근할 때 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다. Critical Section 임계 영역이란 공유 데이터를 접근하는 코드 영역을 의미한다. 이러한 임계 영역에 여러 프로세스가 동시에 접근한다면 위와 같은 race condition이 발생할 수 있다. 이를 방지하기 위해 둘 이상의 프로세스가 동시에 critical section에 진입하지 못하게 막아야 하는데 이를 Mutual exclusion(상호배제)라고 한다. Race Condition 해결을 위한 충족.. 2021. 12. 22.
[OS] 05. 프로세스 관리 1. 프로세스의 개념 실행 중인 프로그램을 의미 디스크에 존재하던 프로그램이 메모리에 올라가서 실행 되기 시작하면 프로세스가 된다. 프로세스는 CPU를 획득해 자신의 코드를 수행하기도 하고, 때로는 CPU를 반환하고 입출력 작업을 수행하기도 한다. 프로세스의 문맥(context)이란 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보를 의미한다. 여러 프로세스가 실행되는 시분할 시스템 환경에서는 타이머 인터럽트에 의해 짧은 시간 동안 CPU를 사용한 후 빼앗기는 식으로 CPU 관리가 이루어진다. CPU를 다시 획득했을 때 이전의 상태를 불러오기 위해 필요한 정보가 프로세스의 문맥이다. 프로세스의 문맥은 크게 세 가지로 분류된다. 하드웨어 문맥 : CPU의 수행 상태를 나타낸다.. 2021. 12. 21.
[OS] 04. 프로그램의 구조와 실행 1. 프로그램의 구조와 인터럽트 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다. 프로그램의 주소 영역은 크게 코드(code), 데이터(data), 스택(stack)영역으로 구분된다. 코드 : 프로그램 함수들의 코드가 기계어 명령 형태로 변환되어 저장되는 부분 데이터 : 전역 변수등 프로그램이 사용하는 데이터는 저장하는 부분 스택 : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 부분 인터럽트의 동작 원리는 함수의 호출과 비슷하다. A 프로그램이 CPU를 할당받아 명령을 수행중일 때 인터럽트가 발생할 경우 A는 현재 수행 중인 명령의 위치를 저장해놓는다. 그 후 인터럽트 처리루틴으로 넘어가 인터럽트를 처.. 2021. 12. 20.
[OS] 03. 컴퓨터 시스템의 동작 원리 1. 컴퓨터 시스템의 구조 컴퓨터는 내부장치인 CPU, 메모리와 외부장치인 디스크, 키보드, 마우스, 모니터 등으로 구성된다. 컴퓨터는 외부장치에서 내부장치로 데이터를 읽어와 각종 연산을 수행한 후, 그 결과를 외부장치로 다시 내보내는 방식으로 업무를 처리한다. 컴퓨터 내부로 데이터가 들어오는 것을 입력(input), 외부장치로 데이터가 나가는 것을 출력(output)이라고 한다. 메모리 및 입출력장치 등의 각 하드웨어 장치에는 이들을 제어하는 작은 CPU인 컨트롤러라는 것이 존재한다. 운영체제는 각종 자원들을 관리해야 하므로 컴퓨터의 전원이 켜진 순간부터 항상 메모리에 올라가 있다. 하지만, 전체가 올라가지 않고 운영체제 중 핵심적인 부분만 항상 메모리에 올라가 있으며 이 부분을 커널(kernel)이라.. 2021. 12. 14.
[OS] 02. 운영체제 개요 1. 운영체제의 정의 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어 운영체제는 컴퓨터의 전원이 켜짐과 동시에 실행되며 동시에 메모리에 올라간다. 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용한다. 이때 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 부르며 이를 좁은 의미의 운영체제라고도 부른다. 2. 운영체제의 기능 1. 컴퓨터 시트템 내의 자원(resource)을 효율적으로 관리하는 것 - 하드웨어를 위한 역할 2. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것 - 사용자를 위한 역할 편리한 환경 제공이란 운영체제가 여러 사용자 및 프로그램들에게 각각 독자적으로 컴퓨터를 사용하는 것과 같은 '환상'을 제공하.. 2021. 12. 13.