전체 글(73)
-
프로그램, 프로세스, 프로세스 주소공간, 스레드
프로그램 코드를 컴파일한뒤, 하드디스크에 저장한 것 프로세스 실행파일(프로그램)이 RAM메모리에 적재되어 cpu를 할당받아 실행하는 것으로, 즉 실행중인 프로그램을 의미한다. 운영체제로부터 자원을 할당받는 작업의 단위 프로세스 주소공간 code 실행한 프로그램의 코드가 저장되는 영역으로, Read-Only영역으로 되어있다. 컴파일시에 결정된다. data 전역변수, static변수가 저장되는 메모리 영역 컴파일시에 결정된다. 초기화된 데이터는 data영역에 저장이 되고, 초기화되지 않은 데이터는 bss(Block Stated Symbol)영역에 저장이 된다. 실행도중에 변경될 수 있기때문에 Read-Write로 지정되어있다. stack 전역변수, 매개변수가 저장되는 메모리 영역 높은 주소 -> 낮은 주소로..
2024.01.17 -
java동작 과정
Java Source code(.java)를 Compile하게 되면 -> .class로 변환이 됨(.class = Java Application) -> 이클립스 혹은 인텔리제이에서 RUN을 하게 되면, JVM은 .class파일을 실행(RUN)시키게 된다. 참조사이트 https://www.youtube.com/watch?v=9V0rdrm59X4
2024.01.16 -
cookie, session, jwt
cookie 쿠키를 이용해서 서버는 우리의 브라우저에 데이터를 넣을 수 있다. - 데이터를 넣는 이유는, 클라이언트의 정보를 기억하기 위해서! 브라우저는 서버에 요청을 보내고, 서버는 이에 응답할텐데, 응답에는 모든 데이터와 클라이언트가 찾던 페이지 정보가 있다. 이때 응답에 쿠키도 포함함! 브라우저에 쿠키를 저장한 후, 해당 웹사이트에 방문할 때마다, 브라우저는 해당 쿠키를 요청과 함께 보내게 된다. 쿠키는 도메인에 따라 제한이 된다. ex) 유튜브가 준 쿠키는 유튜브에만 전송이 된다. 쿠키는 유효기간이 있다. (서버가 유효기간을 정함) 쿠키는 인증 뿐만 아니라, 여러가지 정보를 저장한다. session과 token이 필요한 이유 http프로토콜(클라이언트와 서버 사이 데이터를 전송하는 프로토콜)은 s..
2024.01.16 -
Oauth개념 및 동작방식
Oauth개념 및 동작방식 이해하기 웹 서핑을 하다보면 google과 kakao와 같이 외부 소셜 계정을 기반으로 간편히 회원가입 및 로그인할 수 있는 웹 어플리케이션을 쉽게 찾아볼 수 있다. 예를 들어, google로 로그인하면 API를 통해 연동된 계정 정보를 가져와 로그인이 간편하게 진행된다. 이때 사용되는 프로토콜이 OAuth이다. OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. (위키백과) '원티드라 서비스'는 사용자 인증을 위해 kakao, naver, facebook, google등의 사용자 인증 방식을 사용한다고 가정하자. ..
2024.01.15 -
좀비프로세스와 고아프로세스
좀비프로세스와 고아프로세스 좀비 프로세스(자식이 먼저 종료 + 부모가 wait()호출 X) 자식 프로세스가 부모프로세스보다 먼저 종료 + 부모프로세스가 아직 wait()를 호출하지 않은 자식프로세스의 상태 자식 프로세스가 종료되어도 사용하던 리소스를 운영체제에게 반환하지 못하기때문에 완전히 제거되지 못한다. 이러한 경우에 대비하여, 커널은 자식프로세스의 최소한의 정보(자식프로세스의 PID, 프로세스의 종료 상태 등)을 가지게 된다. 이후, 부모프로세스가 wait() 시스템콜을 호출하여 종료상태를 회수하게 되면, 좀비프로세스가 정상적으로 제거된다. 고아 프로세스(부모가 먼저 종료) 부모 프로세스가 자식 프로세스보다 먼저 종료하게 되면, 이때, 자식프로세스의 상태를 고아프로세스라고 한다. 자식프로세스의 부모..
2024.01.15 -
프로세스 관리
프로세스 관리 운영체제가 프로세스를 전부 생성하는 것이 아니라! 시스템이 부팅된 후 최초의 프로세스만 직접 생성하고 그 다음부터는 이미 존재하는 프로세스가 다른 프로세스를 복제-생성하게 된다. 이때 프로세스를 생성한 프로세스를 부모프로세스, 부모프로세스에 의해 생성된 프로세스는 자식 프로세스라고 한다. 결과적으로 프로세스는 트리를 형성한다. 현실세계와 다르게 자식프로세스가 먼저 죽고, 부모프로세스는 그 이후에 죽는 구조이다. 프로세스 생성과 종료 부모프로세스는 fork() 시스템콜을 통해 자식프로세스를 생성한다. fork() 시스템 콜 : fork() 시스템 콜을 통해 생성된 자식 프로세스는 부모프로세스를 복제하기때문에 부모와 동일한 형태를 가진다. (단, PID값은 서로 다름!) 이후, 자식프로세스가 ..
2024.01.15