본문 바로가기

전체 글252

기술 면접 대비 정리 - 1.3 스케줄링 멀티 프로세스 환경에서는 여러 프로세스가 모두 실행되어야 하지만 CPU 자원은 한정적. 그래서 스케줄링을 통해 모든 프로세스를 공평하게 실행해 한정된 자원을 효율적으로 활용하는 것이 OS의 주요 목적이다. OS에서 스케줄링은 빠질 수 없는 개념으로 목적, 단계, 각종 용어를 숙지해야한다. 1.3.1 스케줄링의 목적 스케줄링의 목적은 멀티 프로세스 환경에서 모든 프로세스를 공평하게 실행하는 것이다. 세부적으로는 아래의 5가지 목적이 있다. - 공평성 : 모든 프로세스가 공평하게 실행돼야 한다. 특정 프로세스가 실행되지 않는 경우가 없도록 스케줄링. - 효율성 : 자원을 효율적으로 사용해 자원이 사용되지 않는 시간이 없도록 스케줄링 해야한다. - 안정성 : 우선순위를 고려해 높은 우선순위의 프로세스를 먼저 .. 2024. 2. 25.
기술 면접 대비 정리 - 1.2 프로세스 프로세스 관련 질문이 나왔을 때 프로세스를 이용한 프로그래밍 경험을 답변으로 엮으면 개발 경험을 부각시킬 수 있다. 1.2.1 프로세스와 스레드 프로세스란? 컴퓨터에서 실행 중인 하나의 프로그램을 의미한다. 프로그램은 특정 작업을 수행하기 위한 명령어의 집합이다. OS는 프로그램을 실행하면서 디스크에 저장된 데이터를 메모리로 로드한다. 프로세스는 OS로부터 독립된 메모리 영역(코드, 데이터, 스택, 힙)을 할당받으며, 다른 프로세스의 메모리 영역에 접근할 수 없다. 프로세스에 할당된 메모리 영역은 아래 그림과 같으며, PCB는 프로세스 제어 블록이다. 프로세스의 메모리 영역 구조 - 스택(stack) : 지역변수, 함수의 매개변수(파라미터), 반환되는 주소 값 등이 저장되는 영역이다. 높은 주소 값에서 .. 2024. 2. 18.
기술 면접 대비 정리 - 1.1 운영체제 운영체제란 ? 하드웨어 위에 설치되어 하드웨어 게층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층이다. 컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행한다. CPU, 메모리와 같은 컴퓨터 자원은 제한적이라서 자원을 관리하는 일은 매우 중요하다. 또한, 사용자와 컴퓨터 간 인터페이스를 제공해 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공한다. 대표적인 OS는 windows, mac os, linux, unix 등이 있다. 운영체제의 목적 OS는 한정된 컴퓨터 자원을 관리하는 시스템이다. 이러한 역할에 기반해 4가지 목적이 있다. - 처리 능력 향상 : OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킨다. - 반환 시간.. 2024. 2. 9.
제로베이스 백엔드 취업 스쿨과 함께한 나의 6개월 돌아보기 (feat. 제로베이스 백엔드 취업 스쿨 수강 후기) 왜 하고 많은 부트캠프 중에 제로베이스 였던가 ? 일단 이 얘기를 제일 먼저 해야할 것 같다. 나는 경기권 4년제 대학의 정보통신공학과를 졸업했다. 웹 개발자를 하고 싶었지만 과에서 다루지 않는 과정이라 웹 개발 관련해서 아무것도 아는게 없었고 기초 공부가 필요하다고 느껴졌다. + 프로젝트 경험도 필요했다. 부트캠프 시작 전에도 혼자 백준을 통해 알고리즘을 공부했다. 그 유명한 SSAFY를 도전했지만 코딩테스트에서 커다란 벽을 느끼고 혼자서는 안 될 것 같다는 생각을 했다. 어디서라도 배울 필요성을 느껴 여러 부트캠프를 추려보았었다. 오프라인은 거리도 있고 출퇴근 시간에 물려 지하철을 타고다닐 생각을 하니 그럼 언제 집에와서 언제 밥먹고 언제 공부하지 ? 라는 생각이 제일 많이 들었고 나는 알고리즘 강의.. 2024. 2. 8.
Docker) Docker에 Jenkins 설치 Jenkins란?) Jenkins는 소프트웨어 개발 시 지속적으로 통합(CI : Continuous Integration) 서비스를 제공하는 툴 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 저장소에 빈번히 업로드 함으로써 지속적 통합이 가능하다. CI : 여러 개발자들의 코드를 계속해서 통합하는 것 => 각 개발자들이 개발한 코드들을 합쳐 공통으로 빌드 및 테스트를 진행 CD : 개발자들이 작성한 코드를 사용자들이 계속 쓸 수 있게 만드는 것. => 테스트가 끝나 빌드된 파일을 배포하는 역할 1. Jenkins 이미지 내려받기 Docker hub (도커이미지 대표 레지스트리로 Ubuntu, CentOS 같은 OS 이미지, MySQL, Re.. 2024. 1. 22.
AWS) EC2에 docker설치 1. 인스턴스에 있는 모든 패키지를 업데이트 $ sudo yum update -y 2. 접속한 인스턴스에 Docker 설치 $ sudo yum install docker -y 1) 설치한 Docker 버전 확인 $ docker -v 2) Docker 실행 $ sudo service docker start 3) Docker 그룹 에 sudo 추가 (인스턴스 접속 후 도커를 바로 제어할 수 있도록) $ sudo usermod -aG docker ec2-user 4) 인스턴스 재접속 후 Docker 명령어 실행해보기 $ docker run hello-world 이제 Docker image를 생성해서 Docker hub를 통해 EC2에 실행할 수 있는 환경이 만들어짐 ! 과정) Dockerfile을 build해.. 2024. 1. 21.
AWS) EC2 인스턴스 생성 EC2란 ?) AWS에서 제공하는 클라우드 컴퓨팅 서비스. 1. EC2 인스턴스 시작하기 - 가상 컴퓨팅 환경으로 가상 머신을 생성하고 실행하는데 사용된다. 2. AMI (Amazon Machine Image) 선택하기 - AMI란 인스턴스를 시작하는데 필요한 정보를 제공하는 이미지로, 한 AMI로 여러 인스턴스를 생성할 수 있다. - AWS에서 제공하는 AMI를 선택하여 사용할 수 있으며, Linux/Windows를 제공한다. - 고유 이미지를 생성할 수도 있고, MarketPlace에도 다양한 이미지가 존재하지만, 대부분 유료이기 때문에 주의 ! -> 인스턴스라는 가상 머신에 운영체제 등을 설치할 수 있게 구워넣은 이미지로 생각하면 된다. ex) 아마존 리눅스 1 AMI를 사용한다면 Amazon Li.. 2024. 1. 20.
Github Actions 적용해보기 아래의 개념들을 필수적으로 숙지 CI/CD 기본 개념 CI / CD 기본 개념 (tistory.com) CI / CD 기본 개념 CI (Continuous Integration) : 지속적인 통합 -> 빌드와 테스트 자동화 모든 개발이 끝난 후 코드 품질을 관리하는 고전적인 방식의 단점을 해소하기 위해 나타난 개념 새로운 코드 변경 사항이 정기적 soni-developer.tistory.com Github Actions 기본 개념 GIthub Actions란 (tistory.com) GIthub Actions란 깃허브에서 제공하는 CI / CD 를 위한 서비스 GItHub Actions를 사용하면 자동으로 코드 저장소에서 어떤 이벤트 발생시 특정 작업이 일어나게 해주거나 주기적으로 어떤 작업들을 반복해서.. 2024. 1. 19.
Github Actions란 깃허브에서 제공하는 CI / CD 를 위한 서비스 GItHub Actions를 사용하면 자동으로 코드 저장소에서 어떤 이벤트 발생시 특정 작업이 일어나게 해주거나 주기적으로 어떤 작업들을 반복해서 실행시킬 수 있음. ex) 누군가 PR을 생성하면 GitHub Actions를 통해 해당 코드에 문제가 없는지 각종 검사 진행이 가능. 새로운 코드 변경 사항이 기본 브랜치 (mastser or main)에 push 되면 GitHub Actions를 통해 sw를 빌드하고 상용서버에 배포(deploy) 할 수 있음. 매일 밤 특정 시각에 그날 하루에 대한 통계 데이터를 수집 시킬 수도 있음. 소프트웨어에서 지속적으로 수행해야하는 반복 작업들은 CI/CD로 불림. 사람이 직접 하기에 비효율적이고 실수할 위험 때문에.. 2024. 1. 19.
728x90