
7️⃣ 하드웨어의 보안 운영체제는 하드웨어의 보안을 위해서 커널모드와 사용자 모드를 지원합니다. ❓ 커널 모드란? 어떤 프로그램이 메모리에 접근하거나, 파일 영역에 접근할 경우 중요한 정보를 보호하기 위해 제공하는 모드입니다. 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 실행할 수 있는 모드로서 모든 종류의 명령어를 실행할 수 있는 모드입니다. ❓ 사용자 모드(유저 모드)란? CPU가 어플리케이션 코드를 실행하는 모드를 의미합니다. 해당 모드에서는 일반 사용자 프로그램이 실행되며, 하드웨어 자원에 직접적으로 접근하는 것이 제한됩니다.

1️⃣ 컴퓨터 시스템의 구조 컴퓨터 시스템의 구조는 컴퓨터 내부 장치인 CPU와 메모리, 컴퓨터 외부 장치인 I/O 장치로 구분됩니다. 컴퓨터 시스템에서는 프로그램이 실행되려면, 해당 프로그램이 컴퓨터 내부 장치인 메모리에 올라가 있어야 실행됩니다. → 해당 작업은 운영체제가 관리하며, 프로그램은 메모리에 로드된 후, CPU에서 작업내용을 실행합니다. 입력(Input) = 컴퓨터 외부장치에서 컴퓨터 내부장치로 데이터가 들어오는 과정을 의미합니다. 출력(Output) = 컴퓨터 내부장치에서 외부장치로 데이터가 나가는 과정을 의미합니다. 컴퓨터 외부 장치인 I/O 장치에서도 마치 컴퓨터의 CPU처럼 해당 작업을 제어하는 디바이스 컨트롤러(Device Controller)가 존재합니다. 또한 I/O 장치에서도..

운영체제의 개요 1️⃣ 운영체제 정의 정의 컴퓨터 하드웨어 바로 위에 설치되어, 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 계층입니다. ❓ 커널이란? 컴퓨터 전원을 키면 운영체제는 함께 실행되는데, 메인 메모리에 올라가 있어야 소프트웨어를 실행할 수 있습니다. 이때, 운영체제처럼 큰 프로그램의 모두가 메모리에 올라가는 것이 아닌 필요한 부분만 올라가게 되고, 그렇지 않는 부분은 필요할 때만 메모리에 올려서 사용하게 됩니다. 이때, 전원과 동시에 운영체제에 실행에 꼭 필요한 부분이 메모리에 올라가는 부분을 “커널”이라고 합니다. 2️⃣ 운영체제의 기능 컴퓨터 하드웨어와 사용자 사이에 운영체제가 존재함으로, 운영체제는 다음과 같이 하드웨어를 위한 역할과 사용자를 위한 역할 2가지로 구분할 수 있습..

안녕하세요. 이번에는 흔히 사용하는 IDE 중 하나인 인텔리제이의 디버깅과 BreakPoint 사용에 대해서 알아봅시다. 🤔 디버깅이란? 디버깅이란 보통 프로그램 내, 오작동 되는 코드를 찾아 고치는 것을 의미합니다. 간단한 스프링 코드를 디버깅을 통해 실행해 봅시다. 🤔 BreakPoint란? 브레이크포인트는 디버깅을 목적으로 실행중인 디버깅 대상 프로세스를 의도적으로 멈추게 하는 장소를 가리킵니다. 이전 살펴본 동일한 spring 코드에 대해서 브레이킹 포인트를 설정하여 살펴봅시다. 👩🏻🏫 설명 브레이킹 포인트를 한 결과를 살펴보면 다음과 같습니다. 👩🏻🏫 설명 Resume = 다음 break Point로 이동하는 것을 의미합니다. Step Over = 현재 break된 파일의 다음 라인 이동 S..

안녕하세요. 이번에는 Java의 빌드 툴에 대해서 알아봅시다. 🤔 빌드 툴이란?(Build Tool) 빌드에서는 컴파일, 테스트, 배포 등의 과정이 포함될 수 있고, 빌드 과정을 도와주는 도구를 빌드 툴이라고 합니다. 대표적인 Java의 빌드 툴로는 Ant, Maven, Gradle 등이 있습니다. 🔎 Ant(Apache Ant) 🔎 Maven(Apache Maven) 🔎 Gradle 📒 Reference JAVA의 빌드툴에 대해 알아보자 토이 프로젝트 진행과 TDD에 대해 공부하기 위해 초기 프로젝트 세팅을 해야 했고, 그 과정 가운데 JAVA빌드 툴에 대해 알아야겠다는 생각이 들어 공부를 시작하게 되었다. 기존 알고 있던 빌드 툴 doosicee.tistory.com

안녕하세요. 이번 포스팅에서는 빌드와 컴파일 간의 차이에 대해서 알아보겠습니다. 🤔 빌드란? 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 결과를 의미합니다. 예시 Java 프로젝트 - A.java 파일과 여러가지 정적 파일들이 담겨져 있는 resource가 존재함 IF) 빌드를 하게 될 경우 소스코드를 컴파일해서 .class 파일로 변환하고 resource를 .class에서 참조할 수 있는 적절한 위치로 옮기고 META-INF와 MANIFEST.MF들을 하나로 압축하는 과정을 하게 됨 빌드 툴(Build Tool) = 빌드 과정을 도와주는 도구 → 컴파일된 코드를 실제 실행할 수 있는 상태로 만드는 일 👨🏻🏫 추가설명 - 빌드 툴(Build Tool) 빌드에서는 컴파일,..

안녕하세요. 이번에는 간단하게 JVM의 동작방식에 대해서 알아보겠습니다. 💁🏻♂️ JVM 동작방식 JVM은 클래스 로더(Class Loader) + 런타임 데이터 영역 (Runtime Data) + 실행 엔진(Execution Engine), 가비지 컬렉터(GarBage Collector)로 구성이 되어 있습니다. 👉🏻 런타임 데이터 영역(Runtime Data Area) 런타임 데이터 영역(Runtime Data Area)는 JVM이 프로그램을 수행하기 위해 OS로부터 할당받는 메모리영역입니다. WAS의 성능에 문제가 발생했을 때, 대부분 이 영역들이 원인이 됩니다.(Memory Leak 혹은 GC) +) 👨🏻🏫 추가 설명 (왜 Web Application Server)에 성능 문제가 발생했을때, ..

안녕하세요. sw사관학교 정글 출신 분의 소개로 참여하게된 독서 스터디 “책너두” 스터디 후기 글을 남겨보려고 합니다! 💁🏻♂️ 책너두란? “책이 너무 두껍다”라는 줄임말로, 2달 동안 도서 목록 중 온라인으로 함께 완독하는 독서 스터디입니다. 매 기수마다 정해진 도서 목록 중 하나의 책을 선택해서 TIL 같이 온라인 인증을 하는 방식으로 진행됩니다. 저는 해당 책너두 스터디에 2기로 참여하게되었습니다. 📷 책너두 모임 개요 & 2기 도서 목록 😽 해당 스터디의 책 및 스터디 기간 저는 해당 스터디에서 읽어볼 책으로 “컴퓨터 네트워킹 하양식 접근 7판”을 선정하고, 3월 13일 (월) ~ 5월 13일(토)까지 스터디를 진행했습니다. 🤔 스터디 진행 방식 해당 스터디는 매주 월요일에서 토요일로 진행되며,..