📌 DevOps :: Development Operations 소프트웨어 개발과 운영을 통합하여 효율성, 협력, 속도, 안정성을 개선하는 개발 및 운영 방법론 개발과 운영간의 협업을 강화하여 릴리즈 주기를 단축하고 문제를 신속히 해결할 수 있도록 도움 🛠️ DevOps의 주요개념 협업과 커뮤니케이션 : 개발자, 운영자, 보안 전문가 등 각 팀의 구성원이 긴밀하게 협력하여 소프트웨어 개발과 배포를 수행 자동화 : 소프트웨어 개발과 배포 과정을 자동화하면 인간의 실수를 줄이고, 일관성과 안정성을 보장할 수 있음 모니터링과 로깅 : 애플리케이션의 상태와 성능을 지속적으로 모니터링하고, 로그를 수집하여 문제를 신속하게 파악하고 대처할 수 있음 🛠️ DevOps의 장점 속도 작업속도가 빨라지므로 고객을 위해 더 ..
💾 파일과 파일시스템 📂 개요 1️⃣ 운영체제는 사용자가 직접 파일을 보관하거나 접근하지 못하도록 하기 위해, 대신 파일을 보관하고 관리하는 파일 관리자를 두어 저장 장치의 전체 관리를 맡기는데, 이를 파일 시스템이라고 함 2️⃣ 가상 메모리에서 메모리 관리자가 메모리 매핑 테이블을 사용하여 가상 주소를 물리주소로 변환하는 것과 마찬가지로, 저장 장치에서는 파일 관리자가 파일 테이블을 사용하여 파일을 관리 함 윈도우의 경우 FAT(File Allocation Table), 유닉스의 경우 I-node와 같은 파일 할당 테이블을 유지 3️⃣ 데이터는 운영체제와 저장 장치 간에 블록 단위로 전송됨. 블록은 저장 장치에서 사용하는 가장 작은 단위로, 한 블록에 주소 하나가 할당 됨. 메모리는 바이트 단위로 저장..
🖥️ 메모리의 구조 📀 메모리의 계층 구조 여러가지 기억 장치를 필요에 따라 속도, 용량, 성능에 따라 계층적으로 나누어 둔 것을 의미 📀 메모리의 계층 특징 하위 계층으로 갈수록 용량이 늘어나고, 가격이 저렴하지만, 속도가 느림 반대로 상위 계층은 빠른대신 용량이 작고 가격이 비쌈. → 이를 보완하기 위하여 메모리 계층 구조를 사용 레지스터와 캐시는 CPU 내부에 존재. CPU에 아주 빠르게 접근할 수 있음 메모리(주기억장치)는 CPU 외부에 존재. 레지스터와 캐시보다 더 느리게 CPU에 접근 하드디스크(보조기억장치)는 CPU가 직접 접근할 방법조차 없음 CPU가 하드 디스크에 접근하기 위해서는 하드디스크의 데이터를 메모리로 이동시키고, 메모리에서 접근해야 함. 아주 느린 접근만 가능 💾 보조 기억 장..
📌 페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을 시, 어떤 페이지 프레임을 선택하여 교체할 것인지 결정하는 방법 ( → 메모리가 꽉 찼을 때 어떤 페이지를 스왑 영역으로 내보낼지 결정하는 알고리즘) 🧷 프레임 : 물리 메모리를 일정한 크기로 나눈 블록 🧷 페이지 : 가상 메모리를 일정한 크기로 나눈 블록 ▶️ 페이지 교체 알고리즘의 종류 1️⃣ FIFO(First In First Out) 알고리즘 : 가장 먼저 메모리에 올라온 페이지를 가장 먼저 내보내는 알고리즘 구현이 간단하지만 성능은 좋지 않은 편 들어온 시간을 저장하거나 올라온 순서를 큐를 이용해 저장할 수 있음 Belady’s Anomaly 현상이 발생할 수 있음 🔑 Belady’s Anomaly :..
👩🏻💻 페이징 (Paging) 📌 프로세스를 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식 페이지 : 고정 사이즈의 가상 메모리 내 프로세스 조각 프레임 : 페이지 크기와 같은 주 기억 장치의 메모리 조각 → 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법 ▶️ 페이징 테이블 (Paging Table) → 페이징 테이블의 매핑 물리 메모리는 고정 크기의 프레임으로, 가상 메모리는 고정크기의 페이지로 분리되어 있음 개별 페이지는 순서에 상관 없이 물리 메모리에 있는 프레임에 매핑되어 저장 → 즉, 모든 프로세스는 하나의 페이징 테이블을 가지고 있으며, 여기에는 메인 메모리에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리의 시작 주소가 ..
🔑 공유자원을 안전하게 관리하기위한 방법인 상호배제(Mutual Exclusion) - 상호배제란 ? : 어떤 프로세스가 임계 영역을 수행 중이면 다른 모든 프로세스들은 그 임계 영역에 들어가지 못하게 막음 → 세마포어와 뮤텍스는 이를 위해 고안된 기법 📌 공유 자원에 대하여 한 번에 하나의 프로세스만이 이에 접근할 수 있도록 통제해야하는데, 그러한 통제가 필요한 영역을 임계영역이라고 부름 👩🏻💻 세마포어(Semaphore) 📌 - 정수값을 갖는 변수이자 자원의 갯수. - 동기화 기법 중 추상적인 방법. 세마포어는 여러 프로세스들에 의해 공유되는 변수로 정의 → 이 변수는 오직 wait과 signal이라는 연산에 의해서만 접근이 가능 wait : 세마포어의 수를 1줄임. 0이되면 lock. signal..