왜 스레드 컨텍스트 스위칭이 프로세스 컨텍스트 스위칭 보다 빠를까?
·
CS
컨텍스트 스위칭CPU(코어)에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체 되는 것컨텍스트 → 프로세스/스레드의 상태컨텍스트 스위칭은 왜 필요한가?여러 프로세스/스레드를 동시에 실행시키기 위해언제 이루어지는가?time slice(quantum)을 다 사용했거나IO작업과 같은 다른 리소스 작업이 이루어져야할때멀티태스킹 시스템에서 어떻게 이루어지는가?time slice 쪼개져서 동시에 프로그램이 돌아가는 것 처럼P1 ↔ P2가 바뀔때마다(색깔이 달라질때마다) → 컨텍스트 스위칭스위칭은 누가 실행하는가?OS 커널(kernel) → 각종 리소스를 관리구체적인 과정다른 프로세스끼리의 스위칭 → 프로세스 컨텍스트 스위칭같은 프로세스의 스레드끼리의 스위칭 → 스레드 컨텍스트 스위칭공통점커널 모드에서 ..
ReTrip : 삼성 싸피(SSAFY) 13기 1학기 최종프로젝트 회고
·
삼성 싸피 SSAFY
✈️ ReTrip : 여행을 새로운 방식으로 추억하다“여행사진을 업로드하는것만으로 친구/가족들에게 여행의 추억을 공유할 수 있는 카드를 받을 수 있으면 어떨까?”싸피 13기 1학기를 마무리하며, 그 고민과 과정 그리고 결과를 공유합니다! 🚀 남들과는 좀 다르게 해 보고 싶었던 싸피 13기 1학기 마지막 프로젝트싸피에서는 1학기 학습 내용을 모두 활용해 ‘관통 프로젝트’를 진행하며 학기를 마무리한다.여행 혹은 부동산 주제를 선택해야 했는데, 페어와 여행을 주제로 한 서비스 개발을 고민하던 중 4샷을 넣은 빅바나 카페라떼로 카페인을 들이켜다가 문득 아이디어가 떠올랐다!💡 기획 시 고려했던 요인들기존 제공 DB·API만 활용하면 창의성 면에서 평범한 프로젝트가 될 가능성이 높았다.제출/과제용이 아닌, 실제..
프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍
·
CS
배경 지식프로그램 : 컴퓨터가 실행할 수 있는 명령어 집합프로세스 : 컴퓨터에 실행 중인 프로그램각각의 프로세스는 독립된 메모리 공간을 할당 받음명령어와 데이터를 가짐CPU : 명령어를 수행하는 연산장치메인메모리 : 프로세스가 CPU에서 실행되기 위해 대기하는 곳I/O : 파일을 읽고 쓰거나, 네트워크, 입출력장치와 데이터를 주고 받는 곳단일 프로세스 시스템CPU 사용률이 좋지 않음I/O작업이 이루어져야한다면 CPU는 놀기때문에여러개의 프로그램을 메모리에 올려두고 I/O 작업중에는 다른 프로그램을 실행하자P1 실행 I/O작업하면 P2가 실행되고 P2 I/O작업하면P1 마저 실행 그 다음 또 P2멀티 프로그래밍CPU 사용률을 극대화할 수 있지만CPU 사용시간이 길어지면 다른프로세스는 계속 대기해야함그래서 ..
변수와 객체와 메모리의 관계 변수와 객체는 메모리에 어떻게 저장될까?
·
Backend/Java
애플리케이션이 어떻게 실행되는지?애플리케이션 : 사용자에게 기능을 제공하는 컴퓨터가 실행할 수 있는 명령어들의 집합메모리(RAM) : 애플리케이션의 위치CPU : 명령어를 실행하는 주체런타임 : 실행환경을 의미메모리 구조애플리케이션에 할동 되는 메모리는 여러 영역으로 나뉨stack → 지역변수, 매개변수(파라미터), 메서드가 호출될 때 마다 스택프레임이 쌓임스택프레임의 동작 과정 예시메서드가 호출되면, 해당 메서드 전용 스택프레임이 스택에 쌓입니다.메서드 실행 중 필요한 지역 변수, 매개변수 등이 이 스택프레임에 저장됩니다.메서드 실행이 끝나면, 해당 스택프레임이 스택에서 제거되고 메모리도 해제됩니다.재귀호출을 한다면 stack 메모리에 계속 실행중인 메서드가 쌓이고 이게 터지면 → 스택오버플로우이 구조..
Spring에서 SQL Injection에 대해 어떻게 대응하고 있을까?
·
Backend/Spring
🛡️ SQL Injection 방어 가이드 (Spring · JPA · MyBatis)핵심 결론만Prepared Statement를 통해 방어한다.JPA/Hibernate는 메서드 기반 쿼리를 사용하고, MyBatis는 #{}를 지향한다.문자열 치환 형태로 SQL을 구현하는 것은 지양한다.Spring Framework는 기본적으로 Prepared Statement를 통해 SQL Injection을 방어하며, JPA/Hibernate와 MyBatis 같은 ORM 도구도 내부적으로 안전한 쿼리 실행 메커니즘을 제공한다. 그러나 개발자가 동적 쿼리나 부적절한 파라미터 바인딩을 사용하면 취약점이 발생할 수 있으므로 올바른 사용법을 숙지하는 것이 중요하다.SQL Injection이란?SQL Injection은 ..
경력자의 삼성 싸피 SSAFY 13기 면접(인터뷰) 준비 방법/후기
·
삼성 싸피 SSAFY
😞 불경기, 취업난에 개발자 취업시장에서도 나와 같은 중고신입들이 정말 많은 것 같다...심지어 네카라쿠배와 같은 빅테크기업은 신입 공고에 2년 이상은 지원금지라는 조항을 걸어둘 정도...나 역시 특성화고 -> 회사 -> 군대 -> 회사(대학교 병행)를 겪어오면서 중소기업에서 오래 근무하다가 학사학위 취득과 함께 조금 더 좋은 환경에서 근무하고 싶다는 계획으로 퇴사를 결정했었다. 최근 싸피14기 인터뷰 합/불 결과가 나왔다는 소식을 들었다! 그래서 예비 후배들에게 작게나마 도움이 되고자 내가 준비했던 과정들의 회고와 느꼈던 점들을 글로써 남겨보려 한다. 특히 나와 같은 경력자의 경우 학교를 졸업하고 온 친구들과 다르게 지원동기 부분에 있어 상당히 작성하기가 좀 난감했을 거다. (왜 취업했었는데 다시 싸..
AWS를 사용한 GitHub 알람 메시징 및 AI 코드 리뷰 자동화 아키텍처 만들어보기 #4
·
AWS
4️⃣ Eventbridge 기반 DB 스캐닝으로 오래된 이슈 확인하기✅ 실습 전 us-west-2 리전이 맞는지 확인해주세요!​Lambda 생성​람다 함수를 하나 더 생성합니다. 생성된지 '10분' 이상된 Issue가 '1개' 이상이면 해당 Issue URL과 함께 경고 알림 문자 메시지 전송하는 로직을 담은 람다 함수입니다.코드 창에 다음 코드를 붙여 넣고 Deploy 버튼을 눌러줍니다.아래의 코드는 다음과 같은 로직을 갖습니다. 작은 따옴표로 표기된 시간은 코드에서 변경이 가능합니다.EventBridge가 '5분' or '3분'마다 CheckOldIssues Lambda를 invoke (실습이므로 빠른 테스트를 위해 짧게 설정하는 것을 추천드립니다.)CheckOldIssues Lambda에서는 깃허..
AWS를 사용한 GitHub 알람 메시징 및 AI 코드 리뷰 자동화 아키텍처 만들어보기 #3
·
AWS
3️⃣ Bedrock을 활용해 PR에 대한 자동 코드 리뷰 작성하기✅ 실습 전 us-west-2 리전이 맞는지 확인해주세요!​Access Bedrock Model​코드리뷰를 하기 위해서는 Bedrock에서 model의 access를 요청해야 합니다. 각 모델은 API 할당량이 있기에, 이번 실습에서는 가장 많이 사용할 수 있는 모델인 Claude 3 Haiku를 사용합니다.아래의 이미지처럼 회색으로 쓰여진 Available to request 부분에 마우스를 갖다 대면 Request model access를 클릭할 수 있습니다.클릭 후 다음 페이지로 넘어가서 하단으로 내려가면 아래와 같이 Anthropic의 Claude 모델들이 있는 것을 확인할 수 있습니다. 그중 저희는 Claude 3 Haiku 줄에..
삼성 청년 SW·AI 아카데미(SSAFY/싸피) 14기 모집(13기가 알려주는 준비 TIP)
·
삼성 싸피 SSAFY
머릿말삼성청년SW아카데미 13기로 1학기를 마무리해 가며 후배 기수 모집을 한다는 소식을 들었다. 내가 느꼈던 싸피만의 장점들을 소개해 가며, 얻어 갈 수 있는 것들이 많다고 생각되면 지원을 추천한다!Apply - 14기 모집안내싸피만의 특징/장점사실 유명한 부트캠프는 소마, 우테코, 네이버 부캠 등 다양한 부트캠프가 있는데, 싸피만의 특장점을 위주로 적어 보자면취업 지원이 확실하다타 부트캠프에 비해 목적이 ‘취업’이라는 데에 확실하게 맞추어져 있는 것 같다. 그래서 지원 요건도 ‘졸업’을 해야만 입과할 수 있다. 각 반마다 취업 컨설턴트님이 계시고, 자소서 첨삭/면접 준비 등 거의 채용 과정의 모든 부분을 도와주신다. 그리고 대기업/금융권과 협력 기업에서 싸피 전용 채용 전형을 운영하거나, 금융권은 공..
AWS를 사용한 GitHub 알람 메시징 및 AI 코드 리뷰 자동화 아키텍처 만들어보기 #2
·
AWS
2️⃣ DynamoDB Stream을 이용해 Github Event 저장하기✅ 실습 전 us-west-2 리전이 맞는지 확인해주세요!​DynamoDB 생성​DynamoDB를 검색하고 메인 페이지에서 Create table을 클릭하면 아래와 같은 화면이 나옵니다. 여기서 테이블 이름을 'GitHubEvent'로 설정하시고, primary key는 'id'로 설정하시고 오른쪽 하단의 Create Table 버튼을 클릭합니다.이름을 반드시 GitHubEvent 로 설정해주세요. 아래 제공되는 WebhookToDB 람다 코드에 dynamoDB 테이블명이 GitHubEvent로 설정되어 있기 때문에 테이블명을 다르게 설정하고 (ex. GithubEvent) 아래 코드를 copy & paste 하면 에러가 발생합니..