본문 바로가기

분류 전체보기

(49)
가상 메모리와 물리 메모리 가상 메모리( = 논리 메모리)가상 메모리는 실제 전체 프로세스의 메모리 중에서 초기에 필요한 메모리만 할당하는 것을 말한다.장점물리 메모리의 크기보다 큰 프로그램들의 실행을 가능하게 한다.더 많은 프로그램을 동시에 실행할 수 있기 때문에 CPU 이용률과 처리율이 높아진다. swap에 필요한 입출력이 줄어들기 때문에 프로그램들이 빠르게 실행된다. (프로그램이 필요로 하는 데이터 중 일부만 주기억장치에 올라가 있기 때문에, 필요하지 않은 데이터는 보조저장장치에 남아있게 된다. 따라서 주기억장치와 보조저장장치 사이를 주고받아야 하는 데이터의 양이 줄어들어 입출력 작업이 줄어들게 된다.)가상메모리의 구조가상 메모리는 불연속 메모리 할당 방식을 취한다. 이것에 대한 정보는 길어지기 때문에 간단하게..
IP주소의 구조 네트워크 간의 통신을 위해서는 IP 주소가 필요하다. 이것은 각 네트워크를 식별하는 주소이다.IP 주소에 대해 알아보자! 1. IP주소(IPv4의 구조) 일반적으로 사용하는 IP주소는 위 사진과 같은 IPv4 구조이다.v4라는 얘기인데 4바이트, 즉 32비트의 주소를 갖는다. 각 자리가 8비트이기 때문에 0부터 255까지의 값을 갖는다.따라서 0.0.0.0부터 255.255.255.255까지가 된다. 또한 IP주소는 네트워크 주소와 호스트 주소로 나뉜다. 예전에는 각 자리를 클래스로 부여하여 범위를 나타내었다. 해당 방식은 클래스풀 방식이라고 하는데 궁금하다면 더 찾아보면 될 것 같다.이 방식에서 할당할 호스트 주소가 부족해짐에 따라 주소를 유연하게 나눌 수 있는 방식으로 변경하였다.그 방식은 서브넷 마..
동기와 비동기, Blocking과 Non-Blocking 여러 작업의 수행 방식을 알아보자!동기 vs 비동기메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기라고 표현하고 그렇지 않은 경우에 대해서 비동기라고 표현한다. 동시에라는 말은 실행되었을 때 값이 반환되기 전까지는 Blocking되어 있다는 것을 의미한다.비동기의 경우, Blocking되지 않고 이벤트 큐에 넣거나 백그라운드 스레드에게 해당 task를 위임하고 바로 다음 코드를 실행하기 때문에 기대되는 값이 바로 반환되지 않는다.  동기와 비동기의 판단 기준은 두 개 이상의 작업 시간을 맞추는지 아닌지이다.동기(syncronous)동기란 여러 작업이 있을 때 서로 시간을 맞춰야 하는 것을 말한다.먼저 시작 시간 또는 종료 시간을 동일하게 맞추는 경우가 있다 (다중 CPU에서 병렬처리)또한 하나의..
멀티 프로세스 vs 멀티 스레드 멀티 프로세스 멀티 프로세스는 여러개의 프로세스를 사용해서 작업을 병렬적으로 수행하는 것이다. 장점 독립된 구조로 안전성이 높다는 장점이 있다. 프로세스 중 하나에 에러가 발생하여도 다른 프로세스에 영향을 주지 않는다. 예를 들어 하나의 탭에서 문제가 발생하여도 다른 탭에는 영향을 주지 않는다. 문제점 독립된 메모리 영역이기 때문에 작업량이 많을수록(Context Switching시 캐시 메모리 초기화가 필요) 오버헤드가 발생하여 성능저하가 발생 할 수 있다. 프로세스 사이의 통신이 복잡하다. 멀티스레드 멀티스레드는 여러개의 스레드를 사용해서 작업을 병렬적으로 수행한다. 장점 시스템 자원소모 감소 (자원의 효율성 증대) 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어 자원을 효율적으로 관리할 수 있..
프로세스와 프로세스 메모리 블록(PCB)의 구조 저번에 프로세스와 스레드의 차이를 다루었다. 여기서 프로세스는 프로그램이 실행될 때의 작업의 단위라고 하였는데 프로세스가 생성될 때는 프로세스 메모리 블록이라고 하는 PCB도 생성이 된다. 그리고 이 PCB는 프로세스가 완료되면 소멸된다. 프로세스와 PCB에 대해서 자세히 알아보자! ⭐프로그램 실행 과정 프로그램이 실행될 때 보조기억장치에 있는 프로그램으로부터 프로세스 이미지를 생성하는데 운영체제가 이 생성된 프로세스 이미지를 주기억장치로 적재시켜 사용한다. 프로세스 이미지에는 코드 영역, 데이터 영역, 스택 영역, 힙 영역이 포함된다. 즉 코드와 데이터의 초기상태가 포함되어있다. CPU는 프로세스 이미지의 내용을 참조하여 프로세스가 초기화되고 프로그램을 실행한다. 그리고 이 실행이 시작될 때 PCB가 ..
프로세스와 스레드의 차이 1. 프로세스 프로세스는 운영체제로부터 자원을 할당받은 작업의 단위 프로그램은 아직 실행되지 않은 파일 그 자체를 말한다. 윈도우의 *.exe 파일이나 MacOS의 *.dmg 파일 등등 사용자가 눌러서 실행하기 전의 파일을 말한다. 쉽게 말해서 그냥 코드 덩어리다. 운영체제(OS)는 정적인 상태의 프로그램을 실행하고자 할 때 메모리 영역에 할당한다. 이때 이 프로그램이 동적인 상태인 프로세스가 된다. 2. 스레드 스레드는 프로세스가 할당받은 자원을 이용하는 실행흐름의 단위 과거에는 이 프로그램을 실행할 때 프로세스 하나만을 가지고 실행했지만 프로그램이 복잡해지면서 어려움이 생겼다. 따라서 프로세스와는 다른 더 작은 실행 단위 개념이 필요하게 되었고, 이 개념이 바로 스레드다. 스택을 스레드마다 독립적으로..
구글 PageSpeed 성능 개선하기(무한 스크롤, preload, 이미지 형식변환, 이미지 압축...) 구글에는 PageSpeed Insight 라는 페이지 성능과 웹접근성 등을 확인할 수 있는 기능이 있다.해당 기능을 활용하면 점수 뿐만 아니라 권장사항도 자세하게 알려주기 때문에 정말 유용하다.https://pagespeed.web.dev/ PageSpeed Insights올바른 URL을 입력하세요.pagespeed.web.dev이번에 웹페이지를 배포하게 되면서 실제 유저도 생겼다. 따라서 유저들이 불편함 없이 페이지를 사용하는지 궁금해서 페이지 성능에 관심이 갔다. 그걸 정량적으로 파악할 수 있는 지표가 이 기능이라고 판단하여 성능 체크를 해보고 개선도 해보았다.나는 페이지를 종합적으로 평가해서 점수를 내리는 줄 알았는데 페이지 라우터별로 입력해서 점수를 볼 수 있다.근데 어찌보면 그게 당연하기도 하고..
리액트 테스팅 라이브러리(RTL)를 사용한 TDD 적용 도전기 2편 - UI 테스트 이제 환경 설정에 대한 에러는 잡았으니 본격적으로 UI테스트를 하면서 개발했다.내가 만들려는 페이지의 최종 UI는 크게 헤더와 칭호 리스트가 있는 UI이다. 상단 버튼과 하단 네비게이션도 있지만 이건 공통 UI이기 때문에 이미 만들어둬서 따로 테스트를 진행하지 않았다.암튼 저번에 헤더 텍스트만 만들었으니 이제 칭호 리스트에 대한 테스트를 만들려고 한다. 근데 테스트를 하려고보니 따지고보면 UI에 대한 테스트는 너무 할게 많았다. 렌더링 테스트, 레이아웃 테스트, 글씨 크기, 배경색 등등.. 그래서 알고보니 UI테스트는 storybook 이라는 걸 사용하면 간편하다고 하는데 jest가 좀 익숙해지면 다음에 적용해봐야겠다.지금은 모든 UI에 대해 테스트하기 어려우니 유저 입장에서 중요한 테스트만 해보려고 한..