본문 바로가기

분류 전체보기

(63)
vscode에서 maven 프로젝트를 jar 파일 빌드하기 안녕하세요. 저는 현재 vscode를 개발 에디터로 애용하고 있습니다. 그렇기에 vscode로 jar 빌드를 몇 번 시도해봤는데 쉽지 않아서 공유하려고 합니다. vscode로 jar 빌드하는 방법 소개 시작하겠습니다. 이번 jar 빌드는 spring boot + maven 프로젝트라고 가정합니다. vscode로 maven 프로젝트를 생성하려면 maven for java라는 패키지를 요구합니다. 위의 패키지를 설치하고 나면 파일 탐색기 목록에 이렇게 MAVEN PROJECTS라고 새로운 목록이 뜨게 됩니다. 그리고 이제 apache maven을 설치해야 합니다. apache maven을 설치하는 것은 워낙 다른 포스트들이 많기 때문에 여기서 그 과정은 생략하도록 하겠습니다. 하지만, 여기서 가장 중요한 것..
command not found: ...\launcher.bat 에러 해결법 저는 VSCode에 기본 터미널로 Window bash를 씁니다. 근데 이상하게 실행 단축키인 Ctrl + F5를 누르면 위의 에러가 뜨면서 실행이 되지 않았어요. 미치고 팔짝 뛸 노릇이었습니다. 이 에러는 디버깅 방법도 많이 게시되어 있지 않는 것 같아서 VSCode 관련 첫 번째 글로 제 격이라고 생각합니다. 방법은 크게 2가지로 나뉘어집니다. 1. 기본 터미널을 cmd로 바꾼다 말 그대로 기본 터미널로 window bash를 쓰지 않고 초기 설정인 cmd를 터미널로 사용하면 에러가 사라집니다. 2. .vscode 설정 파일 추가 결국 이 해결법을 공유하고 싶어서 이 글을 썼습니다. 기본 터미널로 window bash를 유지하면서 스프링 부트 프로젝트를 실행시키고 싶으면 .vscode 폴더를 만들고 ..
Process Synchronization (1) Synchronization (동기화) 여러 프로세스가 협업할 수 있도록 하는 수단 공유되는 자원들을 적절하게 조정함으로써 협동할 수 있도록 한다 e.g. variables, files 정확성을 위해서 필요 각각의 프로세스들은 얽혀 있지만 독립적으로 작동 (속도 예측 불가) CPU 스케줄링은 OS 관할이라 프로그래머가 어떻게 동작할지 예상하지 않는다 여러 프로세스들이 실행되는 환경에서 의도대로 동작시키기 위해 프로세스뿐만 아니라 스레드도 해당 Synchronization problem 동기화를 시키지 않으면 많은 문제가 발생하지만 일단 대표적인 예를 들어보려 한다. 1. 현금 인출 두 개의 프로세스가 현금을 인출하는 상황이다. balance가 100만 원이고 account가 10만 원이라 가정해보자. 1..
CPU Scheduling CPU Scheduling: runnable processes 중에 누가 다음 순서로 실행될지를 결정하는 것 Scheduling algorithm의 목표 모든 시스템 No starvation 우선순위에 비례한 Fairness: 각각의 프로세스에 우선순위에 맞게 CPU 자원을 공유 Balance: 시스템의 모든 part들이 바쁘게 움직이도록 유지 Batch 시스템 Throughput: 시간당 처리하는 job 수가 최대 Turnaround time: 작업 처리 소요 시간이 최소 CPU utilization: CPU가 항상 유의미한 작업을 실행 Interactive 시스템 Response time: 요청에 가능한 한 빨리 응답 Proportionality: 사용자들의 기대에 충족 Real-time 시스템 Me..
Thread Thread가 떠오른 배경 프로세스는 너무 무겁다 각각의 프로세스는 address space를 가져서 code와 data를 따로 차지한다 OS 자원과 정보 Hardware State 프로세스를 구성하기 위한 공간과 data structure가 필요하기 때문에 새로운 프로세스를 생성하는 비용이 너무 비싸다 OS를 거쳐서 IPC를 하는 비용이 너무 비싸다 위와 같은 치명적인 이유들로 Thread가 부상되었고 다음의 특징을 가진다 code와 data 영역을 공유한다 같은 권한을 가진다 자원들을 공유한다 자신만의 hardware state를 가진다 프로세스가 모든 자원과 공간을 독립적으로 가지고 있는 개체라고 한다면 스레드는 공통된 부분은 공유하고 필요한 부분만 독립적으로 구성되어있다. Process vs. T..
Process ※ 운영체제 정리에 앞서 정리한 자료는 한국외대 컴퓨터전자시스템공학부 이윤석 교수님의 수업 자료를 참고하였음을 밝힌다. 1. 프로세스란 무엇인가? 실행 중인 프로그램 실행과 스케줄링의 기본 단위 각각의 프로세스는 고유한 id를 가지고 있어서 그것으로 구분한다 (pid) 각 프로세스가 소유하고 있는 것: CPU contexts (registers) OS resources (memory, open files, etc.) Other information (PID, state, owner, group, etc.) 각 프로세스는 그들 자신만의 address space와 open files, virtual CPU를 가져서 독립적으로 작동한다. 2. Process Address Space 위의 그림은 우리가 흔히 프..
Network 네트워크 프로그래밍에 대해서 자세하게 소개를 하는 것은 시스템 프로그래밍을 정리하는 목적에서 볼 때 배보다 배꼽이 더 클 수 있으므로 간략하게 소개해보려 한다. 네트워킹을 위해서는 client와 server process가 필요하다. server는 client의 연결을 항상 기다리고 있고 client가 요청하여서 연결이 되었을 때에 비로소 네트워킹이 동작하게 된다. Target address가 알맞은 프로세스 or 스레드에 갈 수 있도록 해주는 것이 바로 IP 주소와 Port #이다. 먼저 이 패킷은 IP 주소를 통해 node에 도착하게 되고 그 node 안에서 Port #를 통해 적절한 프로세스 or 스레드로 가는 것이다. 이 과정을 도식화한 것이 아래의 그림이다. IP 주소와 Port #를 통해 알맞..
time management 프로그램에서 time은 크게 calendar time과 Process/CPU time으로 나뉜다. 1. Calendar time UTC (Coordinated Universal Time) / GMT (Greenwich Mean Time): 세계 공통으로 기준이 되는 시간 Epoch time: 1970년 1월 1일 00시 00분 00초를 기점으로 하여 몇 초가 지났는지를 나타낸다 2.Process/CPU time 1 tick = 1 ms or 10 ms time = 프로그램이 얼마나 실행되었는지를 쉘에서 보여주는 초 단위의 시간 time과 관련된 함수들을 소개해보겠다. time_t time (time_t *tloc) tloc: epoch time이 들어간다 정상적인 경우 현재 epoch time이 반환되고..