본문 바로가기

분류 전체보기240

[OS] 스케줄러의 종류: 장기, 중기, 단기 스케줄러 장기 스케줄러(long term scheduler) 어떤 프로세스를 준비큐에 넣을 것인가 결정 작업 스케줄러라고도 부르며 어떤 프로세스를 준비큐에 삽입할지를 결정하는 역할을 한다. 디스크에서 하나의 프로그램을 가져와 커널에 등록하면 프로세스가 되는데 이때 디스크에서 어떤 프로그램을 가져와 커널에 등록할지(준비큐에 등록할지) 결정한다. 장기 스케줄러는 수십 초 내지 수 분 단위로 가끔 호출되기 때문에 상대적으로 속도가 느린 것이 허용됩니다. 또한 장기 스케줄러는 메모리에 동시에 올라가 있는 프로세스의 수를 조절하는 역할을 한다. 하지만 현대의 시분할 시스템에서 사용되는 운영 체제에는 일반적으로 장기 스케줄러를 두지 않는 경우가 대부분이다. 과거에는 적은 양의 메모리를 많은 프로세스들에게 할당하면 프로세스당.. 2021. 8. 4.
[Web] XSS와 CSRF(XSRF)의 차이점 이전에 XSS와 CSRF 에 대한 글을 작성한 점이 있지만 복습겸 차이를 분명히 하기 위해 다시 작성한다. 2021.04.25 - [📌CS/Web] - XSS(Cross-site Scripting) 공격 2021.04.25 - [📌CS/Web] - CSRF(Cross-site Request Forgery) 공격 결론부터 말하자면, XSS는 공격대상이 Client이고, CSRF는 Server이다. XSS은 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, CSRF는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것이다. 따라서, XSS는 사이트변조나 백도어를 통해 클라이언트에 대한 악성공격을 한다. CSRF는 요청을 위조하여 사용자의 권한을 이용해 서버에 대한 악성공격을 한다. XSS(.. 2021. 8. 4.
[DB] 데이터베이스를 사용하는 이유와 성능 DBMS 탄생 배경 파일 시스템 개발자들은 데이터베이스가 존재하기 이전에 파일 시스템을 이용하여 데이터를 관리하였다. 데이터를 각각의 파일 단위(레코드)로 저장하며 이러한 일들을 처리하기 위한 독립적인 애플리케이션과 상호 연동이 되어야 하는데, 파일 시스템에서는 파일에 접근하는 방식이 응용 프로그램 내에 표현되므로 응용 프로그램과 데이터 간의 의존관계가 존재하게 되어 데이터의 구조, 접근 방법이 변경되면 기존의 프로그램과 데이터를 함께 변경해야 한다. 즉, 데이터 정의가 응용 프로그램에 내포되어 있고 프로그램에서 데이터를 접근하고 조작하는 것 이외에 별도의 제어가 없다. 따라서, 파일 단위로 저장할때, 데이터 종속성 문제와 중복성, 데이터 무결성 문제 등이 존재하기 때문에 데이터베이스로 관리하기 시작했다.. 2021. 8. 4.
[Web] Web Server 와 WAS의 차이 Web Server 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램 HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당한다. 정적인 콘텐츠 제공 : WAS를 거치지 않고 바로 자원 제공 동적인 컨텐츠 제공을 위한 요청 전달 : 클라이언트 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답)한다. 클라이언트는 일반적으로 웹 브라우저 ex) Apache Server, Nginx, IIS(Windows 전용 Web 서버) 등 엔진엑스는 아파치의 단점을 보완하기 위해 만든 프로그램. 아파치는 C10K Problem이라고 해서 하나의 웹서버에 10,000개의.. 2021. 8. 4.
[DevOps] 컨테이너의 이해 : 왜 컨테이너가 중요해졌을까? Immutable Infrastructure (변경 불가능한 인프라) 탄생 배경 mutable Infrastructure (변경 가능한 인프라) 우리는 윈도우즈나 맥을 사용하면서 보안, 안정성 그리고 성능 등의 이유로 OS(운영체제)를 자주 업데이트 한다. OS는 시간이 지남에 따라 내용이나 설정이 수시로 변화가 발생하며, 새로운 애플리케이션를 설치할 때는 레지스트리도 변경한다. 지금까지 사용하던 많은 소프트웨어들은 업데이트나 설정 변경 등을 반복하면서 최신 상태로 유지하였고, 서버용 소프트웨어도 유사한 방법으로 관리했다. 서버의 경우에는 OS 설정 변경이나 업데이트 그리고 애플리케이션 배포가 자주 발생하는 경우에 서비스의 안정성에 큰 영향을 미치며, 서버 환경 자체가 파괴되는 경우도 있다. 언제 어느 .. 2021. 8. 3.
[Web] GET과 POST 차이 GET 서버로부터 정보를 조회하기 위해 설계된 메소드 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, query string을 통해 전송한다. 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있다. js, css, 이미지 같은 정적 컨텐츠는 데이터가 크고, 변경될 일이 적어 반복해서 동일한 요청을 보낼 필요가 없다. 정적 컨텐츠를 요청하고나면 브라우저에 요청을 캐시해두고 동일한 요청이 왔을 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용한다. 데이터가 URL에 나타나므로 보안에 취약하다. POST 리소스를 생성/변경하기 위해 설계된 메소드 요청을 전송할 때 필요한 데이터를 Body에 담아서 전송한다. HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송할 수 있다. 따라서 GET과 달리.. 2021. 8. 3.
[DevOps] DevOps의 이해 'DevOps : Infrastructure as Code with 테라폼(Terraform) and AWS 초급, 입문편'을 보고 작성했습니다. DevOps : Infrastructure as Code with 테라폼(Terraform) and AWS 초급, 입문편 - 인프런 | 강의 이 강의는 DevOps의 기본 이론과 함께 DevOps의 기본 중 하나인 Infrastructure as Code(IaC)에 대해 배울 수 있는 강의입니다. 본 강의를 통해 IT기반의 서비스를 DevOps관점에서 올바르게 이해하고, 서비스 www.inflearn.com 1. DevOps의 이해 개념 데브옵스는 합성어 : 소프트웨어 개발(Development) + 운영(Operations) 현재는 단순히 개발과 운영의 통합.. 2021. 7. 29.
[Java] 스트림 Stream 개념 스트림은 반복자 스트림은 컬렉션(배열 포함)의 요소를 하나씩 참조해서 람다식으로 처리할 수 있는 반복자이다. 람다식, 스트림 둘 다 자바 8부터 사용 가능 8이전에는 Iterator를 사용함 특징 1. 람다식으로 요소 처리 코드를 제공한다. 스트림이 제공하는 대부분의 요소 처리 메소드는 함수적 인터페이스 매개타입을 가진다. 매개값으로 람다식 또는 메소드 참조를 대입할 수 있다. 2. 내부 반복자를 사용하므로 병렬 처리가 쉽다. 외부 반복자(ex. Iterator) - 개발자가 코드로 직접 컬렉션 요소를 반복해서 요청하고 가져오는 코드 패턴 내부 반복자 - 개발자 코드가 람다식이되고, 컬렉션은 내부적으로 요소들을 반복하는 스트림을 활용해서 람다식을 요소마다 적용시킴. - 컬렉션 내부에서 요소들을 반복.. 2021. 7. 28.
[OS] 블럭/논블럭, 동기/비동기 블럭 / 논블럭 함수 호출에 대한 이야기 기술적으로 명확히 구분된다. 블록 함수 A를 호출했을 때, 함수 A의 수행이 모두 끝날 때 까지 기다린다(블록). 함수A의 수행이 모두 끝나고 리턴되면, 함수A를 호출한 부분의 다음 부분부터 이어서 실행한다. 논블록 함수A를 호출했을 때, 함수A의 실행을 요청하고 바로 리턴된다(논블록). 동기 / 비동기 행위에 대한 이야기이다. 기술적으로 구분되지 않는다. 추상적인 구분이다. 작업A와 작업B가 있다고 하자. 동기 작업A가 먼저 모두 처리되고 나서 작업 B가 처리되기 시작하면(하나씩 순차적으로 처리되면) 동기이다. 작업A가 작업B를 관찰하는 작업이라면, 작업A와 작업B가 동시에 처리되더라도 동기이다. (여기서 작업A와 작업B를 서로 바꾸어 생각해도 똑같다.) '관찰.. 2021. 7. 28.