전체 글

초보 개발자의 공부 블로그입니다.
파일 시스템을 이용하기 위한 준비운영체제에서 파일 시스템을 사용하기 위해서는 보조기억장치를 적절히 구획하고 초기화하는 작업이 필요하다. 이를 위해 주로 파티셔닝, 포매팅, 마운트와 같은 단계가 이루어진다.  1. 파티셔닝(Partitioning)정의: 보조기억장치의 영역을 구획하는 작업파티션(Partition): 보조기억장치에서 나뉘어진 각각의 구획된 영역목적:하나의 보조기억장치가 지나치게 크면 관리와 검색 효율이 떨어지기 때문에, 적절히 나누어 효율적으로 사용서로 다른 파일 시스템(예: NTFS, ext4 등)을 동일한 보조기억장치에서 동시에 사용할 수 있도록 구성활용 사례:운영체제를 설치할 때 파티션을 자동으로 나눔보조기억장치를 용도에 따라 나누어 데이터 관리 용이파티셔닝이 필요 없는 경우보조기억장치..
파일 시스템파일 시스템은 운영체제에서 파일과 디렉토리를 관리하는 커널의 중요한 구성 요소이다 이를 통해 데이터를 체계적으로 저장하고 접근할 수 있으며, 다양한 파일 시스템을 동시에 사용할 수도 있다. 1. 파일(file)파일은 보조기억장치에 저장된 의미 있는 정보의 집합으로, 운영체제가 데이터를 관리하고 활용하는 기본 단위이다. 1.1. 파일의 구성 요소 이름(Name): 파일을 식별하는 고유한 이름실행 정보: 실행 가능 여부 또는 실행을 위한 관련 데이터부가 정보: 파일의 메타데이터 및 속성  1.2. 파일의 속성파일은 여러 속성을 통해 관리된다. 유형(Type): 파일의 형식(예: 텍스트, 바이너리)크기(Size): 파일의 크기(바이트 단위)생성 날짜(Creation Date): 파일이 생성된 시간마..
·Language/Java
동등성과 동일성자바에서 '두 객체가 같다.'라는 표현은 동등성(equality)과 동일성(identity)이란 표현으로 제공된다. 이 두 개념은 객체를 비교하는 방식에 있어 근본적인 차이를 가지기 때문에 자바는 객체의 동등성과 동일성을 구분해야 되는 상황이 자주 발생하게 된다.  동일성(identity)의 동일은 완전히 같음을 의미한다. 객체가 완전히 같으려면 두 객체가 메모리 상에서 같은 위치를 바라보는 것을 의미한다. 쉽게 이야기해 물리적으로 같은 메모리(힙메모리)에 있는 객체 인스턴스인지 참조값을 확인하는 것과 같다. 동등성(equality)의 동등은 같은 가치나 수준을 의미하지만 그 형태나 외관 등이 완전히 같지는 않을 수 있다. 그래서 동일성은 JVM의 실제 메모리에 물리적인 인스턴스를 비교한다..
·Language/Java
자바의 Object 클래스자바에서 모든 클래스는 Object 클래스를 상속을 받는다. 우리 눈에는 보이지 않지만 클래스가 `extends` 키워드로 명시적으로 상속을 받는 클래스가 없다면, Object 클래스를 상속을 받는다고 생각하면 된다. public class MyClass { // extends Object 가 생략되어 있음}이렇게 자바에서 기본으로 Object 클래스를 상속받는 이유는 다음 두가지를 제공하기 때문이다. 자바 객체가 공통적으로 갖춰야 할 기능(toString(), equals(), hashCode() 등)을 제공하기 위해 사용다형성을 지원하기 위해 모든 클래스의 최상위 부모 클래스를 통일하기 위해 사용 공통 기능 제공자바에서 Object 클래스는 모든 객체가 기본적으로 갖추..
·TIL
https://www.acmicpc.net/problem/2343문제강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다. 강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블..
멘토링 회고F-lab 멘토링의 경우 1시간정도 진행이 된다. 첫 번째 멘토링이었므로 각자 소개 후 내 상황에 대한 분석으로 시작하였다. 나의 상황 SI/SM 회사에서 3~4년 정도 일한 후 이직을 위해 퇴직하였다. 퇴직 사유는 전 회사가 주로 소규모의 프로젝트 위주로 진행하고 많은 고객을 상대로 오픈되는 사이트가 아니다보니 많은 트래픽을 대처하는 경험을 하기가 어려웠다. 그리고 항상 비슷한 프로젝트를 개발하여 한정된 기술스펙에 대해 한계가 느껴서 더 다양한 경험을 통한 성장을 위해 나오게 되었다. 이직 준비는 1년 반에서 2년 가끼이 진행하고 있으며, 너무 길어지는 상황에 답답함을 느껴 F-lab 멘토링을 신청하게 되었다.상황을 공유하고, 멘토링을 본격적으로 시작하게 되었다. 나같은 경우는 사실 시장 상..
·TIL
https://www.acmicpc.net/problem/2776문제 (실버4)시간 제한: 2초메모리 제한 : 256MB연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, 연종이 하루 동안 본 정수들을 모두 ‘수첩1’에 적어 놓았다. 그것을 바탕으로 그가 진짜 암기왕인지 알아보기 위해, 동규는 연종에게 M개의 질문을 던졌다. 질문의 내용은 “X라는 정수를 오늘 본 적이 있는가?” 이다. 연종은 막힘없이 모두 대답을 했고, 동규는 연종이 봤다고 주장하는 수 들을 ‘수첩2’에 적어 두었다. 집에 돌아온 동규는 답이 맞는지 확인하려 하지만, 연종을 따라다니느라 너무 힘들..
copy-on-write프로세스를 `fork`하면 동일한 프로세스 두 개가 메모리에 복제된다. 그 이유는 프로세스끼리는 기본적으로 자원을 공유하지 않기 때문이다.  부모 프로세스에서 `fork`를 해서 생긴 자식 프로세스는 새로운 메모리를 할당받아 부모와 독립적으로 생성된다.이러한 `fork`방식은 메모리 공간 낭비와 프로세스 생성 시간을 낭비하게 된다. 복제 프로세스를 생성할 경우 이를 중복 저장하지 않고, 동시에 프로세스 간의 자원을 공유하지 않게끔 하는 방법이 `copy-on-write`이다.  다음과 같이 처음 자식 프로세스를 생성할 경우 부모와 동일한 프레임 번호가 지정되게 된다. 여기서 만약 두 프로세스 중 어느 곳에 쓰기 작업이 발생했을 경우 그 페이지를 그제서야 복사하게 된다. 이와 같이 ..
페이지 교체 알고리즘요구 페이징을 통해 페이지들이 메모리에 점차 적재하다 보면 언젠가는 메모리가 가득 찰 것이다. 메모리에 페이지가 가득 찬 상황에서 추가적으로 페이지를 적재해야 한다면 메모리에 적재된 일부 페이지를 스왑 아웃(페이지 아웃) 해야 한다. 이때 메모리에 적재된 페이지 중 보조기억장치로 내보낼 페이지를 선택하는 방법을 페이지 교체 알고리즘이라고 한다. 페이지 교체 알고리즘은 컴퓨터 전체 성능과 직결되며, 좋은 페이지 교체 알고리즘은 페이지 폴트를 적게 일으키는 알고리즘이다. 페이지 폴트를 적게 일으킨다는 것은 페이지 참조열을 보면 된다. 페이지 참조열은 CPU가 참조하는 페이지 중 연속된 페이지를 생략한 페이지열이다.참조한 페이지 [ 2, 2, 2, 3, 5, 5, 5, 3, 3, 7 ]페이..
요구 페이징(Demand Paging)요구 페이징은 프로세시 실행 시 필요한 페이지만 메모리에 적재하는 기법이다. 프로그램 전체를 메모리에 적재하지 않고, 처음에는 최소한의 페이지만 메모리에 적재한다. 실행 중 필요한 페이지가 요청될 때마다, 보조기억장치에서 해당 페이지를 가져온다. 이 말은 즉, 페이지 폴트를 발생하면 그때 페이지를 적재한다는 말과 같다. 순수 요구 페이징(Pure Demand Paging)순수 요구 페이징(Pure Demand Paging)은 프로그램 실행 시 아무 페이지도 미리 메모리에 적재하지 않고, 프로그램이 필요로 할 때만 페이지를 메모리에 적재하는 방식이다. 일반적인 요구 페이징에서는 최소한의 페이지(프로젝트 시작 시 필수적인 초기 코드나 데이터)를 미리 메모리에 적재하는 경..
JH_DEV77
JH’s 개발블로그