WIL 9~10주차 - 크래프톤 정글

손찬호·2024년 5월 24일

크래프톤 정글 5기

목록 보기
9/12

User mode vs Kernel mode

운영체제에서 컴퓨터 프로세서는 2가지 모드(사용자, 커널)로 작동한다.

두 모드간의 핵심적인 차이는 '권한'이다.

사용자 모드는 제한된 인스트럭션 실행과 메모리 참조에 제한된 권한을 가진다면
커널 모드는 모든 인스트럭션 실행과 메모리 참조에 제한없는 권한을 가진다.

User modeKernel mode
하드웨어 접근제한됨제한없음
인스트럭션 실행제한된 종류, API 통한 실행모든 종류 접근, 직접 실행가능
메모리 주소 참조API 통한 간접 접근직접 접근
크래시 발생 시복구가능전체 PC 중단

이렇게 모드를 구분해서 프로세스를 실행하는 이유는
사용자 응용프로그램이 하드웨어에 직접 접근해서 시스템을 고장나는 일을 방지하기 위해서다.

Register vs Memory

레지스터는 CPU 내부에 있는 매우 빠른 데이터 저장소이고
메모리는 CPU 외부에 더 큰 용량의 데이터 저장소이다.
일반적으로 적은 양의 데이터를 저장할수록 데이터 접근속도가 빠르고
저장 데이터 단위당 가격이 높은 경향이 있다.

User Stack

사용자 모드(User mode)에서 프로세스가 사용하는 스택입니다.
주로 함수 호출과 로컬 변수 저장등에 사용되는 스택으로 커널 스택과 분리되어 사용자 공간에 있습니다.
여기서 사용자 공간은 모든 사용자 모드 응용 프로그램들이 동작하는 영역을 말하며
각 프로세스는 독립된 가상 메모리 공간을 가지며 다른 프로세스 메모리에 접근할 수 없게 막혀있다.

System Call

응용 프로그램이 커널에 서비스를 요청할 때 사용하는 인터페이스로
파일 시스템에 접근하거나 프로세스 관리 등의 커널 모드에서 실행해야하는
메모리 주소 직접 접근이나 하드웨어 관련 동작을 할 때 호출합니다.
system call이 호출되면 사용자 모드에서 커널 모드로 바뀌고
필요한 동작을 실행하고 다시 사용자 모드로 전환한다.

File Descriptor

파일이나 I/O 자원을 추상적으로 다루는데 사용되는 정수값을 말한다.
입출력의 추상화가 파일인데 운영체제에서 현재 사용 중인 파일에 인덱스를 부여해서 사용한다.
프로세스는 file descriptor를 통해 등록된 파일의 정보를 얻어
파일이나 기타 I/O 장치와 상호작용을 할 수 있다.

Cache

자주 사용되는 데이터나 계산 결과를 미리 복사해 놓는 임시 저장소이다.
자주 사용되는 코드나 데이터를 미리 가져다놓고 데이터 접근 시간을 단축시켜
시스템의 전체 성능을 향상시킬 수 있다.

Atomic Operation

한 번에 실행되고 중단되거나 방해받을 수 없는 연산을 의미합니다.
주로 멀티태스킹과 병렬 컴퓨팅에서 데이터의 일관성과 동기화를 유지하기 위해서 사용되는 연산입니다.
단어 atomic은 '원자적'이라는 뜻으로 원자같이 더 이상 부서지지 않는 것처럼
연산이 중단되거나 방해받지 않고 Atomic Operation으로 묶인 덩어리가 모두 실행됩니다.
인터럽트가 발생해도 Atomic Operation는 중단되거나 방해받지 않고 실행되어
시스템이 안정적으로 동작하도록합니다.

rax register

64비트 아키텍처에서 사용되는 레지스터 중 하나로
32비트 아키텍처의 eax 레지스터를 64비트에 맞게 확장한 레지스터이다.

32 bit OS vs 64 bit OS

두 운영체제의 핵심적인 차이는 'RAM 용량'과 '레지스터 크기'이다.
RAM 용량은 운영체제가 지정할 수 있는 메모리 주소의 개수를 의미하며
레지스터의 크기는 운영체제에서 CPU가 한 번에 처리할 수 있는 데이터 크기와 직접적인 관련이 있다.

32bit 운영체제에서 레지스터의 크기는 32bit=4Byte이며, 최대 2322^{32}개의 메모리 주소를 지정할 수 있다.
레지스터의 크기는 CPU가 한 번에 처리할 수 있는 데이터량과 직접적인 관련이 있다.
메모리 주소 하나의 크기는 1바이트이므로 2322^{32}개의 메모리 주소의 총 크기는 2322^{32}Byte=4GB이다.

64bit 운영체제는 레지스터의 크기이자 한 번에 처리할 수 있는 데이터의 크기가 64bit=8Byte이고,
2642^{64}개의 메모리 주소를 지정할 수 있으므로 이론상 264=18,446,744,073,709,551,6162^{64}=18,446,744,073,709,551,616만큼의 RAM 용량을 가질 수 있지만 기술의 한계로 인해 실제 개인용 컴퓨터는 Windows 10 64bit 기준으로 최대 6TB의 메모리가 사용가능하다고 한다.

64비트 시스템이 32비트 시스템보다 더 많은 데이터 처리량과 메모리 주소가 있기 때문에
더 성능이 좋다.

Interrupt

인터럽트(Interrupt)는 CPU가 현재 작업 중인 프로세스를 중단시키고 다른 긴급한 동작을
처리하고자 할 때 사용할 수 있는 기능이다. 하나의 코어는 한번에 하나의 작업만 처리할 수 있기 때문에
어떤 일을 처리하는 도중에 다른 우선 순위가 높은 일을 먼저 처리해야하는 경우 사용한다.
인터럽트를 활용해서 다양한 작업을 동시에 처리할 수 있어 인터럽트는 동시성과 멀티스레딩이 가능해진다.

Segmentation Fault

프로그램이 잘못된 메모리 접근을 시도할 때 발생하는 오류로
주로 유효하지 않은 메모리 주소에 접근하려고 할 때 발생한다.

profile
매일 1%씩 성장하려는 주니어 개발자입니다.

0개의 댓글