[운영체제] 스레드
·
⚙️ CS
✅ 스레드 (Thread): 실행 흐름 단위 스레드는 다음과 같이 2가지로 나눌 수 있다.하드웨어적 스레드: CPU에서 사용소프트웨어적 스레드: 프로그램에서 사용📍 하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위 1 코어 1 스레드: 한 번에 하나씩 명령어를 실행하는 CPU2 코어 4 스레드: 한 번에 4개의 명령어 처리가 가능한 CPU, 한 코어당 2개의 하드웨어 스레드를 처리 이처럼 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서(멀티스레드 CPU)라고 한다. 📍 소프트웨어적 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위 보통 프로그래밍 언어나 운영체제에서 언급되는 스레드는 소프트웨어적 스레드이다.즉, 흔히 말하는 프로세스 안에서 실행되는 흐름 단위는..
[운영체제] 프로세스
·
⚙️ CS
✅ 프로세스 (Process): 메모리 상에서 실행 중인 프로그램 디스크에 저장된 정적인 명령어 집합인 프로그램이 실행되면, 운영체제는 이에 필요한 자원을 할당하고 메모리에 적재한다.이 시점부터 프로세스라고 부르는 것이다. 만약 동일한 프로그램을 여러 번 실행하면, 각각 다른 프로세스가 생성된다. - 프로그램: 정적인 코드- 프로세스: 실행 중인 프로그램- 스레드: 프로세스 내 작업 단위✅ 프로세스의 상태 New: 생성 중인 상태Running: 실제로 CPU에서 실행되고 있는 상태Waiting(Blocked): 이벤트가 완료되길 기다리는 상태Ready: 프로세스가 실행될 준비는 되어 있지만, 아직 CPU를 배정받지 못한 상태Terminate: 실행이 완료되어 종료된 상태Suspended: 메모리 부족 등..
[운영체제] 시스템 콜 & 인터럽트
·
⚙️ CS
✅ 운영체제(Operating System): 사용자가 컴퓨터를 편리하게 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어 운영체제는 유저 프로그램과 하드웨어 사이에 위치하여 프로그램이 실행될 수 있는 환경을 제공한다. 대표적인 기능은 다음과 같다.사용자 인터페이스 제공그래픽 사용자 인터페이스(GUI): 윈도우 바탕화면처럼 그래픽을 기반으로 컴퓨터와 상호작용하는 인터페이스커맨드 라인 인터페이스(CLI): 명령어를 기반으로 컴퓨터와 상호작용하는 인터페이스GUI는 없고 CUI만 있는 리눅스 서버도 있다.프로그램 실행: 시스템은 프로그램을 메모리 적재해 실행할 수 있어야 한다.입출력 연산: 프로그램이 입출력을 요구하면 운영체제가 이에 대한 수단을 사용자에게 제공해야 한다.파일 시스템 조작: 프로그램에서 파..
[JSCODE] 네트워크 모의면접 회고
·
카테고리 없음
🗓️ 활동 내용3월 14일 ~ 4월 11일 (5주)매주 면접 예상 질문을 바탕으로 공부하고, 그 내용을 블로그에 기록합니다.스터디 당일에는 4~5명이 한 팀을 이루어 모의면접을 진행합니다.각자 지원자, 면접관, 관찰자(타임키퍼) 역할을 번갈아 맡습니다.모의면접은 지원자 한 명당 15분 + 피드백 5분으로 총 20분 진행됩니다. 🎯 모의면접을 신청하고 시작하게 된 계기처음 모의면접에 관심을 가지게 된 계기는 여러 블로그에서 본 회고 후기들이었습니다.CS 공부는 혼자서도 할 수 있지만, 이를 말로 잘 표현하는 연습이 필요하다고 느끼던 차에 JSCODE 모의면접에 대한 후기가 특히 많더라고요. 또한, 예전에 다른 스터디에서 함께 했던 팀원분이 이 프로그램에 대해 언급했던 기억도 떠올랐습니다.  결국, 강제..
[네트워크] IP 주소 & 서브넷 & 라우팅
·
⚙️ CS
✅ IP 주소: 네트워크에서 호스트와 라우터의 각 인터페이스마다 할당되어 있는 식별번호 IP(Internet Protocol)는 네트워크 계층에 위치하는 프로토콜이다.그리고 이 IP 통신을 하기 위해 각 기기들을 구분하는 고유번호가 바로 IP 주소이다. IP주소는 네트워크 주소와 호스트 주소로 나뉜다.인터페이스: 호스트와 물리 링크 사이의 경계 📍IPv4: 32비트로 이루어진 IP주소   IPv4는 4개의 8bit(0~255)로 이루어져 있습니다. 이 4개의 수는 점(.)으로 구분된다.ex) `192.169.12.1` 32비트로 이루어져 있기 때문에 2^32 = 약 42억 개의 서로 다른 주소를 부여할 수 있다.1 byte = 8 bit = 1 octet(옥텟) 💡 클래스: IPv4 주소는 네트워크 ..
[네트워크] UDP/TCP
·
⚙️ CS
UDP와 TCP는 둘 다 전송 계층 프로토콜로, 데이터를 네트워크를 통해 보내는 방식을 정의한다. ✅  UDP (User Datagram Protocol): 신뢰성 없는 비연결형 프로토콜 📍특징비연결성: 연결 설정 없이 데이터를 보냄 신뢰성 없음: 순서가 바뀌거나, 중간에 데이터가 사라질 수 있음빠른 속도: 연결 설정 없이 데이터가 전송되고, 헤더가 간단하여 처리 시간이 짧음낮은 오버헤드: 간단한 프로토콜 구조로, CPU와 메모리 자원 소모가 적음TCP는 20Byte의 헤더 오버헤드를 갖지만, UDP는 8Byte의 오버헤드를 가짐멀티캐스트 및 브로드캐스트 지원: 여러 수신자에게 데이터를 동시에 전송 가능혼잡 제어 미지원: 네트워크 상태에 관계없이 데이터를 전송 속도가 빠르고, 멀티캐스트 및 브로드캐스트..
[스프링] 스프링 이벤트는 언제 써야할까?
·
🎯 Programming
기존 프로젝트에서 Service 간 의존성이 생기는 부분이 고민이었고, 이를 해결하기 위해 스프링 이벤트를 적용해 봤습니다. ✅ 프로젝트 상황"내부 알림 기능"이 서비스에 필요했습니다.즉, 유저가 서비스에 접속했을 때 알림이 쌓여 있고 이를 확인할 수 있는 화면이 필요했습니다.  사용자에게 알림이 도착하는 상황은 다음 3가지 경우였습니다.리뷰 요청프로젝트 팀원 초대팀원 초대 수락📍 Alarm 테이블해당 기능에 필요한 알람 테이블은 다음과 같이 설계했습니다.  주요 필드로는 `receiver_id`: 알람은 받는 사람 ID`sender_id`: 알람을 보낸 사람 ID`targetId`: 알림이 발생한 3가지 상황 각각에서 연관된 엔티티의 ID`message`: 알람 멘트`alarm_type`: 알람이 발..
[네트워크] XSS, CSRF, SQL Injection & 웹 캐시와 프록시 서버
·
⚙️ CS
✅ XSS (Cross Site Scripting): 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입하는 공격 웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지 않고 사용할 경우 나타난다.  📍 방어하는 방법사용자의 입력값을 제한하여 스크립트를 삽입을 방지태그 문자(: , &) 등 위험한 문자 입력 시 인코딩하여 필터링하기✅  CSRF (Cross Site Request Forgery): 인증된 사용자의 권한으로 원치 않는 요청을 보내는 공격 사용자가 로그인 상태일 때 악성 사이트에서 요청을 발생시켜 피해를 줄 수 있다. 📍 방어하는 방법특정 관리 조작 요청에 비밀 토큰이 포함되도록 하는 비밀 토큰 유효성 검증수신 HTTP 요청에서 referer 헤더의 유효성을 검증하도록 하..