목록전체 글 (25)
RealMenRoad
본 내용은 반효경 교수님의 운영체제와 정보의 기술을 보고 정리하였습니다. 1. 프로그램의 구조와 인터럽트 프로그램이 cpu에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야한다. 프로그램의 주소 영역은 크게 코드 , 데이터 , 스택 영역으로 구분된다. 코드는 프로그램 함수들의 코드가 cpu에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 부분, 데이터 영역은 전역 변수등 프로그램이 사용하는 데이터를 저장하는 부분이다. 스택 영역은 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 데에 사용되는 공간이다. 프로그램에서 메인 함수 명령 시행하다 호출함수 구문에서 복귀 주소는 스택영역에 저장되고 이로써 각 프로그램의 주소 공간중..
프로그램이 메모리의 한영역에 모여있는 단순한 경우 - 기준레지스터 한계레지스터 메모리의 여러영역에 나뉘어 배치 (페이징) - 더 현실적인 메모리 관리법 필요
하드웨어 보안기법 우리가 흔히 아는 운영체제는 여러 프로그램이 동시에 실행될 수 있는 다중 프로그래밍 환경에서 동작한다. 그러므로 각 프로그램이 다른 프로그램의 실행을 방해하거나 프로그램 간에 충돌을 일으키는 문제를 막기 위해 하드웨어에 대한 각종 보안 기법이 필요함 운영체제는 보안 유지를 위해 기본적으로 커널모드와 사용자 모드를 지원함. 하지만 사용자 프로그램이 cpu를 가지고 있는동안 운영체제가 자신의 코드를 실행하지 못하므로 사용자 프로그램을 감시할 방법이 없어진다. 하드웨어적 지원으로 컴퓨터 시스템은 cpu내부에 모드비트를 두어 사용자 프로그램을 감시함 모드비트가 0이 되어있으면 커널모드로서 모든 명령을 수행하고 모드비트가 1이면 사용자 모드로서 제한된 명령을 수행하게 세팅함. 사용자 프로그램이 ..
인터럽트의 일반적 기능. 프로그램이 요청한 데이터를 컨트롤러가 인터럽트를 발생시키면 CPU는 인터럽트가 들어온 것을 인지하고 하던일을 멈추고 인터럽트가 발생했을 때 수행하도록 정의된 코드를 찾아 수행한다. 이때 수행하는일은 디스크의 로컬버퍼에 있는 내용을 사용자 프로그그램에 전달하고 다음 수행할 명령을 표시함. 운영체제가 해야할 일 들을 개발자가 미리 프로그래밍해서 커널 내에 포함시켜두었다 . 그중 한가지가 인터럽트 처리루틴이다. 위에 말한 인터럽트가 들어왔을 때 CPU가 인지하고 인터럽트 관련업무를 수행하게끔 프로그래밍이 되어있다. 다양한 인터럽트에 대해 각각 처리해야될 업무들을 정의해놓음. 운영 체제는 할 일을 쉽게 찾아가기 위해 인터럽트 벡터(interrupt vector)를 가지고 있다. 인터럽트..
컴퓨터 시스템의 구조 컴퓨터 시스템의 구조는 내부장치인 cpu , 메모리 와 외부장치인 디스크 , 키보드 스피커 , 모니터 , 네트워크 장치 등으로 구성되어 있다. 이때 데이터가 내부로 들어오는 것을 입력이라 하고, 컴퓨터 외부장치로 데이터가 나가는 것을 출력이라고 한다. 키보드로부터 입력을 받아서 컴퓨터가 어떤 연산을 한 후 그 결과를 모니터에 출력하는 것을 입출력이라고 한다. 따라서 컴퓨터 외부장치를 입출력 장치라고 한다. 디스크에서도 입출력이 일어난다.! 하드웨어 장치들 메모리 그리고 외부장치들은 각각 컨트롤러를 가지고 있는데 이들은 제어하며 작은 cpu 라고 불린다. 메모리에 있는 컨트롤러는 메모리 컨트롤러 디스크에 있는 컨트롤러는 디스크 컨트롤러~ 사람들이 생각하는 운영체제는 여러 프로그램이 동..
일요일 신청했던 점핏 콘서트 온라인 참여하였다. 내용은 프론트엔드 개발자의 진로 및 기술 스택에 대한 강의와 소프트스킬이 중요하다 등등 이었다. 김태곤 개발자님의 시행착오에 대한 조언들 1. 클린 코드의 강조성 기능별로 함수를 나누면 디버깅에 용이하다. 2. 읽기 좋은 코드가 클린 코드이다! 클린코드에 메인은 읽기 좋은 코드인 것 변수 이름 , 함수 이름 등 변수명을 길게 짓는 것 또한 좋은 방법 변수명을 한국어로 짓는 방법도 추천해주셨는데 이런건 컨벤션에 합의가 되어야 가능한 부분이라 생각한다. 3. 일관성 있는 코드 예를 들어 들여쓰기, 컨벤션 등등 4. 테스트 코드는 가능한 부분 부터 작성하자! 테스트 코드의 중요성을 아직 잘 모르는 나의 경우 -- 찾아보자 김태곤 개발자님은 회긔 버그와 리펙토링 ..
우선 운영체제는 하드웨어 위에 설치되는 소프트웨어이다. 엥? 나는 소프트웨어와 하드웨어 차이를 정확하게 알지도 구분하지 못해 찾아보았다. 소프트웨어 : 컴퓨터 안에서 운영되고 있는 프로그램 하드웨어: 컴퓨터 성능에 직접적으로 관련된 부분. 소프트웨어는 예를들어 ms 윈도우 운영체제 , 포토샵 등 프로그램등을 말한다. 하드웨어는 마우스 , 키보드 입출력 장치등 ram , hdd 등과 같은 실물 둘의 구분은 간단하게 손으로 만질 수 있느냐 없느냐의 차이 다시 본론으로 전원을 켰을 때 운영체제가 없으면 컴퓨터는 고철 기기에 지나지 않고 사용자 입장에서 순수 하드웨어를 다루는게 쉽지 않기 때문에 전원을 켰을 때 쉽게 하드웨어 위에 운영체제를 탑재해 다루기 위한 상태를 만드는 것. 전원이 켜짐과 동시에 운영체제는..
쿠키(Cookie)와 세션(Session)은 웹 애플리케이션에서 사용자의 상태를 유지하고 관리하기 위해 사용되는 기술입니다. 각각의 특징과 차이점은 다음과 같습니다. 쿠키(Cookie): 클라이언트(브라우저)에 저장됨 서버에서 발급하고, 클라이언트에서 관리 브라우저마다 쿠키 저장소가 분리되어 있음 만료일자를 지정하여 일정 시간동안 유지될 수 있음 보안상 취약점이 있어 중요한 정보를 저장하면 안됨 세션(Session): 서버에 저장됨 서버에서 발급하고, 서버에서 관리 클라이언트와 상호작용하면서 생성됨 브라우저마다 동일한 세션 ID를 사용하여 서버에서 구분함 브라우저를 닫으면 세션 종료됨 보안상 상대적으로 안전하나, 세션 저장용 공간이 필요함 JWT(Json Web Token): 클라이언트(브라우저)에 저장..
useCallback과 useMemo는 모두 React에서 컴포넌트의 성능을 최적화하는 데 사용되는 훅입니다. 하지만 두 훅은 서로 다른 목적을 가지고 있습니다. useCallback은 함수 자체를 캐싱하는 데 사용되며, 같은 함수가 계속해서 재생성되는 상황을 방지할 수 있습니다. 이는 자식 컴포넌트에 props로 전달될 때 매번 새로운 함수를 생성하는 것을 방지하고, 자식 컴포넌트의 불필요한 렌더링을 방지하는 데에 효과적입니다. 예를 들어, 자식 컴포넌트에 props로 전달되는 함수가 매번 재생성될 때마다 자식 컴포넌트가 불필요하게 렌더링된다면 useCallback을 사용하여 함수를 캐싱하여 불필요한 렌더링을 방지할 수 있습니다. useMemo는 계산 결과 값을 캐싱하는 데 사용되며, 복잡한 계산이 필..
useEffect와 useLayoutEffect의 가장 큰 차이점은 실행 시점입니다.useEffect는 렌더링 이후에 비동기적으로 실행됩니다. 즉, 브라우저가 컴포넌트를 렌더링한 후, 화면이 그려진 이후에 실행됩니다. 따라서, 컴포넌트의 업데이트가 끝난 후 처리해야 할 작업이 있을 때 주로 사용됩니다. 대표적인 예로는 API 호출이나 이벤트 리스너 등이 있습니다. 반면, useLayoutEffect는 렌더링 직후에 실행됩니다. useEffect와 달리, 브라우저가 컴포넌트를 렌더링한 후, 실제로 화면에 그리기 전에 실행됩니다. 따라서, 컴포넌트의 업데이트가 끝난 후에 처리해야 하는 작업이 화면에 영향을 주는 경우, 예를 들어 DOM 노드의 크기나 위치를 조정하는 작업 등이 있을 때 주로 사용됩니다.결론적..