시작은 미미하나 끝은 쥬쥬하리라.

DevOps 51

[운영체제] 메모리 플러시(Memory Flush)와 설계 전략

목차메모리 플러시응용/심화요약1. 메모리 플러시컴퓨터는 성능을 위해 데이터를 디스크에 바로 쓰지 않고 속도가 빠른 RAM의 특정 구역(버퍼, 캐시)에 임시로 모아둠.-> 플러시는 이 임시 구역에 쌓여 있는 아직 저장되지 않는 데이터를 실제 물리적인 저장 장치로 강제로 밀어넣는 과정. Dirty Page : 메모리에는 있으나 아직 디스크에는 반영되지 않은 수정된 페이지.Flush : Dirty Page를 디스크로 옮기고 메모리 공간을 다시 Clear하는 것. 메모리 플러시가 필요한 이유?데이터 무결성-> 데이터를 메모리에 들고 있다가 정전 등 상황이 발생하는 경우 데이터는 증발, 플러시를 해야만 비로소 비휘발성 상태.메모리 확보-> RAM 공간은 한정되어 있으므로 디스크에 기록이 완료된 데이터는 메모리에서..

[운영체제] OS에서 파일 시스템(File System)이란?

목차파일 시스템응용/심화요약1. 파일 시스템파일논리적인 저장 단위로 레코드 혹은 블록 단위로 이루어진 비휘발성 데이터.주로 보조기억장치에 저장.파일은 생성 / 읽기 / 쓰기 / 이동 / 삭제 등의 동작을 할 수 있으며 파일의 메터데이터를 메모리에 올려놓는 열기 / 닫가 조작도 가능. 파일 속성(File Attribute, Metadata)파일을 관리하기 위한 정보-> 파일 이름, 유형, 저장 위치, 사이즈, 소유자, 접근 권한, 시간 등-> UNIX에서는 이 메타데이터를 Inode라는 구조체에 담아서 관리. 디렉토리파일의 메타데이터 중 일부를 보관하는 일종의 파일디렉토리에 속한 파일 이름과 파일 속성 등을 보관주로 파일 검색 / 생성 / 삭제 / 변경 등의 동작을 수행. 디렉토리 구현 방식 :(1) Li..

[운영체제] COW(Copy-on-Write) 기법과 대용량 데이터 복사 최적화

목차COW응용/심화요약1. COWCOW같이 공유하다가 누군가 수정할때만 복사한다는 철학-> 모든 리소스마다 복사 동작을 수행하면 너무 많은 오버헤드가 발생하고, 모든 리소스를 공유하면 프로세스가 독립적이지 못하게 되기 때문에 나온 개념. ex) 메모리 관리에서의 COW(1) 두 프로세스가 동일한 물리 메모리 페이지를 가리킴.(2) 페이지 테이블에서 이 메모리 영역은 읽기 전용으로 설정.(3) 한쪽 프로세스에서 Write 동작을 시도.(4) CPU가 페이지 테이블을 확인하니 읽기 전용이라 페이지 폴트를 발생시킴.(5) OS가 개입하여 실제 메모리 공간을 할당해서 복사 해주고, 쓰기를 시도한 쪽의 페이지 테이블을 새 주소로 갱신. ex) 부모 - 자식 프로세스에서의 COW(1) 부모 프로세스가 fork()..

[운영체제] 가상 메모리와 페이징/세그멘테이션/단편화/워킹셋

목차가상 메모리응용/심화요약1. 가상 메모리가상 메모리실제 메모리(RAM) 크기와 별개로 프로그램이 사용할 수 있는 메모리 공간을 확장하는 기술.-> PC가 물리적 메모리보다 더 많은 메모리를 사용할 수 있도록 가상 주소 공간을 제공하는 메모리 관리 기법.-> 운영체제가 하드디스크의 일부 공간을 가상 메모리로 활용. ex) 일반적인 RAM은 8~32GB정도, 그럼에도 몇 십 기가바이트의 프로그램 및 게임을 실행하는 것은 가상 메모리의 기능. 핵심 원리는 모든 데이터를 주 기억장치에 올리지 않고 필요한 부분만 적재해서 사용하는 것.,-> 남은 데이터는 보조 기억장치인 HDD, SDD에 존재하고 필요하면 주 기억장치로 올려서 사용.->가상 메모리 주소와 실제 메모리 주소는 일치하지 않기 때문에 1대1로 대응..

[운영체제] 인터럽트와 ISR / DPC

목차인터럽트응용/심화요약1. 인터럽트하드웨어에는 컨트롤러라는 소형 CPU가 있고 이는 데이터의 입출력 시, 임시 저장하기 위한 공간인 로컬 버퍼를 가짐.I/O 디바이스에서 CPU로 데이터를 읽어오는 경우, 컨트롤러의 로컬 버퍼에 데이터가 저장되었다가 CPU로 데이터가 전송되는데 이 과정에서 로컬 버퍼에 데이터가 입출력 되었다는 것을 CPU에게 통보하는 것이 인터럽트. 인터럽트I/O 디바이스 컨트롤러들이 CPU에게 데이터 입출력을 통보하는 것. CPU는 명령을 하나씩 읽어와서 수행하는데, 매 명령 수행마다 인터럽트 라인(Interrupt Line)을 확인하여 인터럽트 관련 동작을 먼저 처리함.-> 운영체제의 커널에는 인터럽트에 대한 처리 루틴이 저장되어 있으며 이는 인터럽트 벡터(Interrupt Vect..

[운영체제] 버퍼링과 배치 처리를 통한 과도한 시스템 콜 해결

목차시스템 콜응용/심화요약1. 시스템 콜일반적으로 CPU는 내부의 Mode bit를 플래그로 유저 모드 혹은 커널 모드로 동작.유저 모드 : 사용자 애플리케이션 코드가 실행, 하드웨어 등에 접근 불가.커널 모드 : OS가 CPU를 사용하며 하드웨어를 제어하는 명령어를 실행. 시스템 콜(System Call)은 커널 영역의 기능을 사용자 모드에서 사용할 수 있게 만든 OS의 인터페이스.-> 프로세스(유저 영역)가 하드웨어(커널 영역)에 접근 가능.-> 일반적으로는 시스템 콜을 직접적으로 사용하는 것이 아닌 API 함수를 사용. 크게 시스템 콜은 6가지 분류로 구분.-> (1) 프로세스 제어, (2) 파일 조작, (3) 장치 관리, (4) 정보 유지, (5) 통신, (6) 보호 ex) 시스템 콜 API인 f..

[운영체제] 멀티 프로세스 / 스레드 비교 및 HMI 환경에서의 멀티 프로세스

목차멀티 프로세스 vs 멀티 스레드응용/심화요약1. 멀티 프로세스 vs 멀티 스레드멀티 프로세스멀티 프로세스는 운영체제로부터 독립된 자원을 할당받은 여러 개의 작업 단위(프로세스)를 동시에 실행하는 것.ex) 웹 브라우저에서의 각 탭들은 개별적인 프로세스.각 프로세스는 0x00000000부터 시작하는 고유의 가상 주소 공간을 가짐. -> OS의 MMU(Memory Management Unit)가 이 가상 주소를 실제 물리 메모리로 매핑, 각 프로세스끼리는 주소를 알 수 없음.내부적으로는 하나의 부모 프로세스가 여러 자식 프로세스를 생성하면서 멀티 프로세스 구조를 형성.-> 부모와 자식은 고유한 PID를 가지고 있음.-> 부모는 자식 프로세스의 PID를 가지고 있어 자식 프로세스를 통제.-> 자식은 부모..

[CS] 빌드 자동화 프로세스에서 .bat 파일 vs .ps1 파일 비교

목차batch 파일과 쉘 스크립트응용/심화요약1. batch 파일 vs 쉘 스크립트배치 파일배치 파일은 사용자의 개입 없이 정의된 순서대로 처리되는 명령 / 파일 리스트 데이터를 가진 파일.확장자 .bat이 사용되며 일반적으로 한 번에 여러 프로세스를 실행하거나 반복 작업을 수행하는데 사용. (CMD 환경에서 동작)-> 파일 확장자가 .bat이기만 하면 아무 텍스트 에디터나 사용해서 작성 가능. batch 파일 기본 문법@echo off : 명령어들이 화면에 표시되는 걸 끄고 결과만 보여줌.rem : 주석.set : 변수를 선언.pause : 명령이 끝나고 창이 바로 닫히지 않게 멈춰줌. ex) 배치 파일을 통한 CMake 예시.@echo offrem --- HMI 자동 빌드 스크립트 ---echo [..

[CS] 크로스 플랫폼과 CI 단계에서 관리 정책

목차크로스 플랫폼응용/심화요약1. 크로스 플랫폼기본적으로 크로스 플랫폼은 하나의 소스 코드로 여러 운영체제에서 동작하는 소프트웨어를 만드는 기술을 의미.-> 장점 : 시간 및 인적 비용을 절감할 수 있으며 유지 보수가 편하고, 장비의 확장성 등이 크로스 플랫폼을 사용하는 이유.-> 단점 : 여러 플랫폼을 동시에 충족 시켜야하므로 제약이 있으며, 소프트웨어 품질도 특정 플랫폼 특화 소프트웨어보다 낮음. 크로스 플랫폼 구현 방식(1) 네이티브 컴파일.코드를 작성하면 각 OS에 맞는 컴파일러가 OS 전용 네이티브어(기계어)로 직접 변환.ex) Qt (2) 하이브리드 / 웹 방식.웹 언어(JS / HTML)을 통한 어플리케이션 구현, 이후에는 브라우저가 환경에 맞게 디스플레이.ex) React Native (..

[CS] CMake vs qmake

목차CMake vs qmake응용/심화요약1. CMake vs qmake빌드빌드 과정은 전처리 -> 컴파일 -> 어셈블 -> 링크 과정을 빌더가 수행.일반적으로는 Windows에서는 MSBuild, 리눅스에서는 Make, Ninja는 ninja가 빌더.모든 IDE는 개별적인 프로젝트의 설계도 파일을 가지고 있음. ex) VSC : .vcsproj, RAD : .cbproj-> 해당 설계도 파일에는 사용자가 프로젝트 옵션에서 설정하는 include 경로 및 라이브러리 지정 등에 대한 정보가 기록.-> 이상 프로젝트 파일 혹은 메타데이타 파일. IDE에서 빌드를 하게되면 IDE는 빌드를 하는 빌더를 호출하면서 프로젝트 파일을 전달하고, 빌더는 해당 파일을 참고하여 빌드 과정을 수행. CMakeCMake는 빌..

반응형