read
라는 시스템 콜 호출시 커널 모드로 전환read
는 block 시스템 이라 파일이 읽을 상태가 될때까지 기다려야 하기 때문에 t1을 wating
상태로 변환해줘야 한다. running
으로 바꿔준다.뭐로 파일을 읽을 준비가 됐다고 알려줄까?
그게 바로 interrupt
, 파일이 준비가 됐다는 인터럽트 발생시킴
ready
상태로 변경해 줘야 한다.timer라는 하드웨어
를 통해 알려주게 됨하드웨어 혹은 시스템 관련 기능은 어떤 프로그램이라도 반드시 시스템 콜을 통해서만 사용 가능하다.
하지만 보통 우리는 개발 시 직접 OS 시스템 콜을 사용한 적은 없었다. 그럼에도 불구하고 우리는 지금까지 파일 I/O, 네트워크 I/O, 프로세스/스레드 작업을 해왔다.
Q. 이게 어떻게 가능했던 것일까?
A. 이것은 우리가 사용하는 프로그래밍 언어들이 시스템 콜을 포장(wrapping)하여 간접적으로 사용할 수 있도록 제공했기 때문이다.
Thread thread = new Thread();
thread.start();
native
가 붙으면 운영체제를 보통 뜻한다.요청한 파일을 응답해주는 것
HTTP 서버는 갑 즉, 을이 원하는 데이터를 가지고 있다. 그렇기 때문에 을이 갑에게 request(요청)
을 한다. 이때, ip 주소를 알아야 한다.
또한 URL(Uniform Resource Location)
로 만들어 자원의 위치를 요청해서 필요한 데이터를 가져올 수 있다.
response 할 때는 을의 ip주소를 몰라도 된다. 을이 요청한 ip주소 토대로 request이 자신이 누군지 밝히는데 그 정보를 토대로 그 정보에 response 해주면 된다.
이때 갑이 웹서버
가 된다.
즉, 요청을 하지 않으면 응답을 할 수 없다. 왜냐하면 요청한 정보를 토대로 주소를 알기 때문이다. 만약 요청을 하지 않았는데도 알려면 소켓(socket)을 사용해야 한다. 을이 연결하는 순간 연결이 지속되어 있기 때문이다.
여기서의 자원은 static 자원 즉, 정적인 자원이다. 매번 바뀌지 않고 일치함
자바 파일을 컴파일 해서 html로 번역해서 돌려준다.
자바코드를 요청하게 되면 아파치는 자바코드를 이해하지 못한다. 응답을 못한다는 것
그렇기 때문에 아파치에 톰켓을 달게 된다. 그렇게 apache가 이해하지 못하는 것을 tomcat에게 제어권을 넘겨준다. .jsp 파일
에 있는 모든 자바 코드를 컴파일 한다. 컴파일 된 파일을 html로 만들어준다.
그 후 apache에게 돌려주면 받게 된다. 보통은 웹 브라우저와 통신을 하는데 웹 브라우저는 html, javascript, css, avi 등 처럼 정적인 것들만 이해할 수 있다. .jsp 파일
을 받게 되면 웹 브라우저는 열리지 않고 깨지게 된다.