728x90
반응형
SMALL

CS 25

시스템 콜(System Call)

시스템 콜(system call)시스템 콜(System Call)은 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램이 커널에 접근하기 위한 인터페이스입니다.응용 프로그램 ——————→ 커널 ( System Call) 간단히 말해서, 사용자 프로그램이 특권 명령(하드웨어 제어, 파일 접근 등)을 수행해야 할 때, 운영체제에게 "이거 좀 대신 해주세요!"라고 요청하는 방법이에요. 우리가 사용하는 프로그램들은 직접 하드웨어를 건드릴 수 없어요. 왜냐하면:보안상 위험해요 (해커의 악의적 접근)시스템이 불안정해질 수 있어요 (초보자의 실수)여러 프로그램이 동시에 하드웨어를 제어하면 충돌이 일어나요그래서 운영체제가 중간에서 안전하게 모든 하드웨어를 관리하고, 프로그램들은 시스템 콜을 통해..

CS/운영체제 2025.09.19

운영체제(OS)란

들어가며?우리가 매일 사용하지만 잘 모르는 'OS'에 대해 이야기해보려고 합니다.여러분이 지금 사용하고 있는 스마트폰, 컴퓨터를 켜면 가장 먼저 무엇이 나타나나요? 바탕화면이죠?그런데 이 바탕화면이 나타나기까지, 보이지 않는 곳에서 엄청나게 복잡한 일들이 일어나고 있습니다. 바로 'OS' 때문이죠. OS는 Operating System의 줄임말로, 한국어로는 '운영체제'라고 합니다.컴퓨터를 사용할 때마다 우리는 운영체제와 끊임없이 상호작용하고 있습니다. 하지만 운영체제가 정확히 무엇이고, 어떤 역할을 하는지 알고 계신가요?오늘은 운영체제의 모든 것을 알아보겠습니다.운영체제란?운영체제(Operating System, OS)는 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터 하드웨어와 응용 프로그램 사이의 중간 ..

CS/운영체제 2025.09.19

프로세스와 스레드의 자원공유

들어가며우리가 컴퓨터를 사용할 때 여러 프로그램이 동시에 실행되고 있습니다. 웹 브라우저, 음악 플레이어, 문서 편집기 등이 모두 함께 돌아가고 있죠. 그런데 이들이 어떻게 컴퓨터의 한정된 자원을 나누어 사용하는지 궁금하지 않으셨나요? 프로세스와 스레드가 메모리와 CPU를 어떻게 공유하고, 왜 어떤 상황에서는 스레드가 효율적이고, 어떤 상황에서는 프로세스가 더 안전한지 알아보겠습니다.프로세스란 무엇인가먼저 프로세스가 무엇인지부터 시작하겠습니다.여러분이 메모장을 실행한다고 생각해보세요. 하드디스크에 저장된 메모장 프로그램 파일이 메모리로 로드되고 실행되기 시작합니다. 이렇게 실행 중인 프로그램을 프로세스라고 합니다.운영체제는 각 프로세스에게 독립된 메모리 공간을 제공합니다. 마치 각 프로세스가 자신만의 ..

CS/운영체제 2025.09.19

프로세스 VS 스레드

들어가며컴퓨터 프로그램을 사용할 때 전공 지식이 꼭 필요하진 않습니다.하지만 소프트웨어를 직접 개발하는 사람이라면, 언젠가는 컴퓨터 실행 내부 요소를 하나씩 따져보게 되는 순간이 찾아옵니다.아마 운영체제(OS)에 대해 처음 입문하면 가장 먼저 듣게 되는 개념이바로 프로세스와 스레드일 것입니다. 결론부터 말하자면 이 둘을 한마디로 정의하면 다음과 같습니다.프로세스(Process): 운영체제로부터 자원을 할당받은 작업의 단위스레드(Thread): 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위여기서 중요한 단어는 바로 “작업의 단위(프로세스)”와 “실행 흐름의 단위(스레드)”입니다.프로그램과 프로세스정적 프로그램(Static Program)‘프로세스’라는 용어는 다소 낯설 수 있지만, ‘프로그램’이라는..

CS/운영체제 2025.09.08

MVC패턴(View-Model-Controller)

들어가며: 왜 디자인 패턴이 필요할까?어떤 앱을 만든다고 생각해보세요. 처음엔 간단하게 시작했지만, 기능이 하나둘 추가되면서 코드가 점점 복잡해집니다. 그리고 나중에 유지보수를 하거나 다른 개발자들과 함께 작업해야 할 때가 오죠. 이때 우리는 "좀 더 쉽고 깔끔하게 만들 수 있는 방법"을 고민하게 됩니다. 만약 이런 방법들을 미리 정리해두지 않는다면? 매번 처음부터 클래스와 함수들을 일일이 다 만들어야 할 거예요. 디자인 패턴이란 바로 이런 "좀 더 쉽고 편리하게" 개발할 수 있도록 만들어진 검증된 해결책들입니다. 프로그램 개발 중에 반복적으로 발생하는 문제점들을 정리해서, 상황에 따라 간편하게 적용할 수 있는 특정한 "규약" 형태로 만든 것이죠. 예를 들어,데이터를 만들고 → 이 데이터를 수정하는 로직..

CS/디자인 패턴 2025.09.08

스프링 빈(Spring Bean)

Bean이라는 이름의 유래스프링이 등장하면서 자바빈의 개념을 확장해 스프링 프레임워크 내부에서 관리되는 객체들을 스프링 빈이라고 부르기 시작했습니다.자바빈에서 영감을 받아 Bean이라는 단어를 사용한 이유는, 단순하고 가벼운 객체라는 뜻을 함축하기 위해서였습니다. 즉, 자바빈처럼 스프링 빈도 재사용 가능한 작은 단위의 객체들이며, 스프링 컨테이너가 이를 관리해준다는 개념입니다.스프링 빈이란?스프링 빈은 스프링 컨테이너에서 관리되는 객체입니다.쉽게 말해, 우리가 만든 객체들을 스프링이라는 "특별한 상자(컨테이너)" 안에 넣어두고, 스프링이 그 객체들의 생성부터 소멸까지 모든 것을 관리해준다고 생각하면 됩니다.“직접 관리” vs “컨테이너 관리”기존 방식 (개발자가 직접 관리):개발자가 `new`로 생성하고..

CS/프레임워크 2025.09.08

DI(Dependency Injection) 의존성 주입

의존 관계란 무엇인가?Java는 객체지향 언어입니다. 따라서 객체들 간의 관계를 적절히 맺어주는 것이 매우 중요합니다."의존 관계"라는 것은 거창한 개념이 아닙니다. A 인스턴스가 B 인스턴스의 메서드를 호출하고 있다면, A는 B에 의존하는 관계입니다. A가 B의 기능을 가져다 사용하고 있으니까요.class A { public void methodOfA() { B b = new B(); // A가 B를 직접 생성 b.example(); // B의 메서드를 사용 → A가 B에 의존 }}class B { public void example() { System.out.println("B의 기능 실행"); }}기존 방식의 문제점위 코드에서 A와 ..

CS/프레임워크 2025.09.08

Spring이란?

Spring 이란?Spring은 JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크입니다.왜 Spring이 필요할까?Java 개발의 현실을 생각해보세요:프로젝트 규모가 커졌습니다: 옛날과 달리 지금의 Java 프로젝트는 훨씬 복잡하고 큽니다다양한 기술들이 등장했습니다: JSP, MyBatis, JPA 등 수많은 기술들을 프로젝트에서 함께 사용해야 합니다중복 코드가 발생합니다: 아무리 팀으로 분업해도 비슷한 코드들이 반복적으로 나타납니다복잡한 설정들: 각 기술을 연동하려면 복잡한 설정과 코드가 필요합니다→ 객체 생성, 설정 파일 작성, 기술 연결과 같은 부수적인 일에 많은 시간 소비 Spring은 이런 문제들을 해결해줍니다:중복 코드 줄이기: 반복되는 패턴을 프레임워크가 처리해줍니다비즈니..

CS/프레임워크 2025.09.08

JWT(Json Web Token)란?

들어가며서버 기반 인증의 문제점처음에는 서버(세션) 기반 인증 방식을 많이 사용했어요. 사용자가 로그인하면 서버가 세션을 만들어서 저장해두고, 이후 요청 때마다 그 세션을 확인하는 방식이죠. 하지만 시스템 규모가 커지면서 문제가 생기기 시작했습니다.사용자가 많아질수록서버에서 관리해야 할 세션 데이터가 계속 늘어나니까 메모리 부담이 커졌어요.게다가 서버를 여러 대 운영하게 되면,각 서버마다 세션 정보를 동기화해야 하는 복잡한 문제도 생겼죠.토큰 기반 인증의 등장이런 한계점들 때문에 토큰 기반 인증 방식이 나오게 되었어요.토큰에는 사용자 인증에 필요한 정보가 이미 들어있어서, 서버가 별도로 세션을 저장할 필요가 없습니다.서버는 토큰이 유효한지만 검증하면 되니까 훨씬 가벼워졌어요.그리고 어떤 서버에서든 동일한..

CS/웹 2025.08.12

CI/CD

CI/CD란소프트웨어 개발이 점점 복잡해지면서, 전통적인 개발 방식은 다음과 같은 문제점들을 안고 있었습니다:통합 지옥(Integration Hell) 여러 개발자가 각자 브랜치에서 개발을 진행한 뒤, 며칠 또는 몇 주 단위로 코드를 한꺼번에 병합하면 충돌(conflict)이 자주 발생하고, 이를 해결하는 데 많은 시간과 노력이 필요했습니다. 기능 개발보다 '통합' 자체가 더 큰 일처럼 느껴지는 경우도 있었죠.느린 피드백 루프 코드가 작성된 후 품질 테스트, 리뷰, QA, 배포 등의 과정을 거쳐 실제 사용자에게 도달하기까지 수 주가 걸리곤 했습니다. 이렇게 느린 사이클은 버그 발견을 늦추고, 시장 반응에 빠르게 대응하는 것을 어렵게 만들었습니다.수동 배포의 위험성 배포는 종종 운영팀이나 특정 개발자가 수..

CS/개발상식 2025.08.02
728x90
반응형
LIST