운영체제의 개념 하드웨어의 각 장치를 관리하고 사용자가 켬퓨터를 편리하게 사용할 수 있는 환경을 제공 운영체제의 기능 핵심은 컴퓨터 시스템 자원을 관리한다는 것 컴퓨터는 CPU, 주기억장치, 보조기억장치, 입출력장치 등 많은 자원들로 구성되어 있고, 운영제체는 이를 효율적으로 작동하도록 관리한다. 프로세스 관리 프로세스란 실행되기 위해 올라간 프로그램을 의미. PCB(process control block) 프로세스에 대한 정보를 저장하는 장소 프로세스 상태 : 실행, 준비 등의 상태 주소 레지스터 값 : CPU에서 처리할 주기억장치의 다음 명령어 주소 스케줄링 정보 : 다음에 실행될 프로세스를 결정하는데 필요한 정보 주기억장치 정보 : 프로세스가 주기억장치의 어느 영역에 위치하는지에 대한 정보 프로세스..
Scale up과 Scale out 일반적으로 자체 서버를 가지고 있는 극히 일부의 회사들을 제외하고 대부분의 회사들은 AWS와 같이 클라우드 서비스를 통해 서비스를 운영한다. 즉 AWS에서 제공하는 가상 서버를 이용한다. 가상 서버를 이용하는 장점 중에 하나가 바로 가상서버이기 때문에 Auto Scaling에 유리하다는 것이다. Auto Scaling이 무엇인지 이해하려면 Scale up과 Scale out을 이해하고 있어야 한다. Scale up AWS EC2로 예를 들어보자. 기존 서비스는 t2.micro 인스턴스로 운영 중이라고 가정한다. t2.micro는 가상 CPU가 1개이고 메모리도 1GiB이다. 트래픽이 많지 않은 서비스라면 해당 스펙으로도 운영이 가능할 것이다. 그런데 점점 트래픽이 늘어..
상속과 다형성 인터페이스와 추상클래스에 대해 알아보기 전에 상속과 다형성에 대해 명확히 이해하는 것이 중요하다고 생각했다. 왜냐하면 인터페이스와 추상클래스를 사용하는 목적의 차이가 상속과 다형성의 차이에서 기인한다고 생각했기 때문이다. 상속이란 상속의 장점은 무엇일까? 기존에 작성된 클래스를 재활용할 수 있습니다. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서는 해당 멤버를 작성하지 않아도 됩니다. 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련합니다. (출처: https://www.tcpschool.com/java/java_inheritance_concept) 여기서 중요한 대목은 3번의 계층적 관계를 구성한다는 의미라 생각한다. 즉 상속은..
equals 메소드는? 동등성을 비교할 때 사용하는 메소드로 자바의 최상위 클래스인 Object 클래스에 정의되어 있다. 동등성이란? 동등성을 이해하기 전에 동일성에 대해 알아보자. 무언가 동일하다는 것은 물리적으로 같은 것임을 의미한다. 예를 들어 서울에 있는 나와 다른 시간 대에 부산에 있는 나는 '동일하다'고 할 수 있다. 그렇다면 동등성은 동일성과 무엇이 다를까? 동등성은 논리적인 같음을 의미한다. 예를 들어 어제와 오늘은 날짜도 다르고 물리적으로 별개이다. 그러나 1년 365일 중 하루라는 논리적 의미로는 어제나 오늘이다 같다. 즉 동등성은 실제 물리적 속성을 비교하면 다르지만 논리적인 개념으로 같은 성질을 가질 때를 의미한다. 프로그래밍적 관점에서는 서로 다른 변수가 같은 메모리 주소를 가지면..
F-lab 멘토링 시간에 String 객체의 equals와 compareTo의 차이에 대해 질문이 있었다. 해당 질문에 잘 답변하지 못해 정확히 이해하고자 코드를 분석하면서 이해해보고자 글을 적는다. equals public boolean equals(Object anObject) { if (this == anObject) { return true; } return (anObject instanceof String aString) && (!COMPACT_STRINGS || this.coder == aString.coder) && StringLatin1.equals(value, aString.value); } 코드는 아주 간단하다. == 비교로 두 객체의 주소 값이 같으면 true를 반환. 주소 값이 같이..
유튜브 채널 쉬운코드의 메모리 관련 영상을 정리해보았다. 영상 링크 runtime이란? 어플리케이션이 메모리에 올라가 실행중인 상태 Stack 메서드의 지역변수, 매개변수가 저장되는 공간. 스택 프레임의 형태로 저장되고 메서드가 호출될 때 생성된다. 생성자가 호출될 때도 스택 메모리에 스택프레임이 쌓인다. 스택메모리에 정해진 용량보다 스택 프레임이 쌓이는 정도가 넘어가면 StackOverflow 에러가 발생한다. 재귀함수에서종종 발생한다. Heap 객체가 저장되는 공간. 어플리케이션이 동작할 때 Stack, Heap에서는 무슨 일이? public class Main { public static void main(String[] args){ Counter c = new Counter(); two(c); i..