운영체제(OS)/keyword 27

(Project2-User Programs) 인터럽트(Interrupt)

인터럽트는 컴퓨터의 정상적인 프로그램 실행을 방해하고, 특정 사건이 발생했을 때 우선적으로 처리되도록 하는 메커니즘이다. 이러한 사건은 주로 하드웨어나 외부 디바이스에서 발생하며, 예를 들어 키보드나 마우스를 통한 사용자의 입력, 타이머의 만료, 입출력 장치의 데이터 도착 등이 있다. 1. 인터럽트의 종류 하드웨어 인터럽트: 주로 하드웨어 장치에서 발생하며, 외부에서 발생한 이벤트에 의해 트리거된다. 소프트웨어 인터럽트: 소프트웨어에서 명령을 수행하다가 일부 예외 상황이나 특정 조건에 도달했을 때 발생한다. 2. 인터럽트의 동작 과정 인터럽트 발생: 외부 이벤트가 발생하면, 해당 인터럽트에 대한 신호가 발생한다다. 현재 수행 중인 작업 중단: CPU는 현재 실행 중인 명령을 일시 중단하고, 중단된 지점을..

(Project2-User Programs) 32 bit OS vs 64 bit OS

1. 비트(Bit)의 의미 32비트 OS: 각 메모리 주소가 32비트로 표현된다. 이는 시스템이 최대 4GB의 RAM을 직접 주소 지정할 수 있음을 의미한다. 64비트 OS: 각 메모리 주소가 64비트로 표현된다. 더 큰 주소 공간을 제공하여 수십 테라바이트의 RAM을 처리할 수 있다. 2. 메모리 관리 32비트 OS: 주소 공간의 한계로 인해 시스템이 지원하는 최대 메모리 양이 제한된다. 보통 4GB의 물리 메모리 한계를 가진다. 64비트 OS: 대규모 메모리 지원이 가능하며, 현대 시스템에서 더 효과적으로 활용된다. 수십 테라바이트의 물리 메모리 지원이 일반적이다. 3. 프로세서 성능 및 레지스터 크기 32비트 OS: 32비트 프로세서에 최적화되어 있다. 32비트 레지스터를 사용하므로 데이터 처리 속..

(Project2-User Programs) rax 레지스터(rax register)

RAX 레지스터는 x86 아키텍처에서의 64비트 레지스터 중 하나로, Accumulator(누산기)의 약어이다. 이 레지스터는 다양한 목적으로 사용되며, 주로 산술 및 논리 연산, 데이터의 저장과 이동 등에 활용된다. RAX 레지스터는 또한 함수의 반환값을 저장하는 데에도 사용되어 함수 호출에서 중요한 역할을 한다. 용도와 기능 산술 및 논리 연산: RAX 레지스터는 산술 및 논리 연산을 수행하는 데에 사용된다. 연산 결과는 RAX에 저장되어 다음 명령어에서 활용될 수 있다. 데이터의 임시 저장: 프로그램이 실행되는 동안 발생하는 임시 데이터나 계산 중인 중간 값 등을 저장하는 데에 사용된다. 함수 호출과 반환값 저장: 함수 호출 시, 인자 전달과 반환값 저장에 사용된다. 특히, 64비트 아키텍처에서는 ..

(Project2-User Programs) 원자적 연산(Atomic Operation)

Atomic Operations(원자 연산)은 다중 스레딩 환경에서 데이터의 일관성과 안전성을 보장하기 위한 중요한 개념이다. Atomic Operations은 '원자적인'이라는 의미로, 이는 연산이 반드시 분리되지 않고 원자적으로 실행되어야 함을 나타낸다. 다중 스레딩 환경에서 여러 스레드가 동시에 데이터를 읽거나 쓰는 경우, 이러한 연산이 원자적으로 수행되지 않으면 예측할 수 없는 결과가 발생할 수 있다. 위 그림의 경우 원자성이 보장됨으로써 R.write(2) 연산 도중에 R.write(3) 연산의 영향을 받지 않게 된다. Atomic Operations의 예: Atomic Add (원자적 덧셈): 여러 스레드가 동시에 하나의 변수에 값을 더하려고 할 때, Atomic Add 연산은 해당 변수의 값..

(Project2-User Programs) 캐시(Cache)

캐시는 데이터나 값을 미리 복사해 두는 고속의 임시 저장 공간을 말한다. 이는 주로 느린 주 기억장치(메인 메모리)와 빠른 CPU 간의 속도 차이를 극복하고자 도입되었다. 캐시는 데이터에 대한 빠른 액세스를 제공함으로써 전체 시스템 성능을 향상시킨다. 캐시의 동작 원리 적중(Hit): CPU가 필요한 데이터를 캐시에서 찾았을 때를 말한다. 이 경우, 메모리보다 캐시에서 데이터를 가져오기 때문에 더 빠른 속도로 처리된다. 실패(Miss): CPU가 필요한 데이터를 캐시에서 찾지 못했을 때를 말한다. 이 경우, 메모리에서 데이터를 가져와야 하므로 더 많은 시간이 소요된다. 캐시의 종류 레벨 1 캐시(L1 Cache): CPU 내부에 위치하며 매우 빠른 속도로 액세스 가능하다. 레벨 2 캐시(L2 Cache)..

(Project2-User Programs) 파일 디스크립터(File Descriptor)

파일 디스크립터는 간단히 말해 프로세스가 파일이나 다른 입출력 리소스에 접근할 때 사용되는 식별자(식별 번호)이다. 모든 리소스는 고유한 파일 디스크립터로 식별되며, 이를 통해 프로세스는 해당 리소스에 대한 입출력 작업을 수행할 수 있다. 모든 프로세스는 각각의 파일 디스크립터 테이블을 갖는다. 프로세스마다 같은 파일에 대한 식별 번호(파일 디스크립터)가 다를 수 있지만 표준 입출력 및 에러 파일 디스크립터인 0, 1, 2는 공통이다. 파일 디스크립터의 종류 표준 파일 디스크립터: 0: 표준 입력 (stdin) 1: 표준 출력 (stdout) 2: 표준 에러 (stderr) 사용자 정의 파일 디스크립터: 3부터 시작하여 사용자가 정의한 파일 디스크립터. 파일이나 소켓 등 다양한 리소스에 대한 접근을 나타..

(Project2-User Programs) 시스템 콜(System Call)

시스템 콜은 사용자 프로그램이 운영체제의 서비스에 접근하는 창구 역할을 한다. 프로그램이 운영체제에게 특정 서비스를 요청할 때, 시스템 콜을 통해 이루어지며, 이를 통해 하드웨어 자원이나 특권 명령을 사용할 수 있다. 시스템 콜의 동작 사용자 모드에서 커널 모드로 전환: 프로그램이 시스템 콜을 호출하면 현재 실행 중인 프로세스가 사용자 모드에서 커널 모드로 전환된다. 이는 운영체제의 핵심 부분에 접근하기 위한 필수 단계이다. 커널 함수 호출: 커널 모드로 진입하면, 특정 시스템 콜을 수행하는 커널 내의 함수가 호출된다. 이 함수는 운영체제의 핵심 로직을 수행하며, 프로그램에 필요한 서비스를 제공한다. 인터럽트와 연결: 시스템 콜은 소프트웨어 인터럽트를 통해 호출된다. 사용자 프로그램이 운영체제에게 서비스..

(Project2-User Programs) 유저 스택(User Stack)

유저 스택은 프로그램이 실행되는 동안 함수 호출과 데이터 저장에 필수적으로 사용되는 메모리 영역 중 하나이다. 이 영역은 주로 함수 호출과 관련된 작업에 사용되며 유저 스택의 역할과 동작 방식은 다음과 같다. 1. 유저 스택의 역할 유저 스택은 프로그램이 함수를 호출하고 반환하는 과정에서 중요한 역할을 한다. 함수 호출 및 반환: 함수가 호출되면 해당 함수의 로컬 변수, 매개 변수, 반환 주소 등이 스택에 저장된다. 함수가 반환되면 스택에서 이전에 저장한 정보들이 역순으로 제거되고, 프로그램은 호출 지점으로 복귀한다. 임시 데이터 저장: 임시로 사용되는 데이터, 지역 변수, 함수 호출 시 필요한 데이터 등이 스택에 임시로 저장된다. 2. 유저 스택의 동작 방식 유저 스택은 Last In First Out..

(Project2-User Programs) 레지스터와 메모리(Register vs Memory)

레지스터(Registers)와 메모리(Memory)는 컴퓨터 시스템에서 중요한 구성 요소로, 데이터를 저장하고 처리하는 데 사용된다. 레지스터(Registers): 레지스터는 컴퓨터의 중앙처리장치(Central Processing Unit, CPU) 내부에 위치한 작은 저장 공간이다. CPU가 명령어를 실행하거나 데이터를 처리할 때 사용되는 임시 데이터 저장소로 작용한다. 레지스터는 매우 빠른 속도로 데이터에 접근할 수 있으며, 이는 프로그램 실행 속도를 향상시키는 데 기여한다. 종종 레지스터는 특정 목적을 위해 설계되어 있고, 일반적으로는 데이터 레지스터, 주소 레지스터, 명령어 레지스터 등이 있다. 메모리(Memory): 메모리는 컴퓨터에서 데이터와 프로그램을 저장하는 곳이다. 주 기억장치 또는 RA..

(Project2-User Programs) 유저 모드와 커널 모드(User mode vs Kernel mode)

컴퓨터 시스템에서는 사용자 프로세스가 실행되는 환경과 운영체제(OS)의 핵심 부분이 실행되는 환경을 구분하여 두 가지 모드로 나눌 수 있다. 이 두 모드는 각각 "User Mode(사용자 모드)"와 "Kernel Mode(커널 모드)"이다. User Mode(사용자 모드) User Mode는 사용자 응용 프로그램이 실행되는 환경을 의미한다. 사용자 모드에서는 주로 응용 프로그램이 동작하며, 일반적인 작업들을 수행한다. 사용자 모드에서는 사용자의 명령에 따라 응용 프로그램이 메모리에 접근하고, 파일을 열고, 네트워크 통신 등을 수행한다. 이 모드에서는 일반적인 사용자 작업을 처리하고, 시스템 자원에 직접적인 접근이 제한되어 있다. 사용자 프로세스는 필요한 서비스나 자원에 대한 요청을 운영체제에게 전달하고,..