일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Deadlock
- dfs
- 삼성리서치
- exec
- 프로세스
- 가상메모리
- fork
- segmentation
- 완전탐색
- 구현
- 컴공복전
- 백준
- 스케줄링
- BFS
- samsung research
- 운영체제
- BOJ
- 삼성기출
- 백트래킹
- 시뮬레이션
- 동기화문제
- 김건우
- paging
- pwnable.kr
- higunnew
- Brute Force
- 알고리즘
- ascii_easy
- 데드락
- Memory Management
- Today
- Total
목록전체 글 (57)
gunnew의 잡설
먼저 이 글은 2020년 하반기 삼성전자 3급 신입공채 삼성리서치 sw개발 부문 면접 후기임을 알립니다. 너무 늦게 쓰게 되어 좀 민망하긴 하지만, 제가 면접을 준비하던 당시 삼성리서치 면접 후기를 찾기가 너무 힘들어 불안하고 막막했던 기억이 나서 글을 짧게나마 써봅니다. 1. 면접 장소 및 시간 이전까지는 오전 오후 풀타임으로 면접을 진행하다가 당시가 코로나 초-중기여서 이때부터 오전반/오후반으로 나뉘어 면접을 진행하게 된 것으로 알고 있습니다. 저는 오전반이었고 인재개발원까지 약 오전 7시 30분쯤까지 도착해야 했던 것으로 기억합니다. 인재개발원에 도착하면 좀비 아포칼립스가 벌어진 것처럼 방역복을 입은 안내원분들이 거리두기를 지키면서 한 명씩 들여보냈습니다. 아무튼 면접 대기장소에 도착하면 지원 사업..
0. 글 쓰는 이유 거의 2년의 기간 동안 블로그 활동을 하지 않았었다. 고등학교 때부터 대략 10년을 달려오면서 항상 느껴왔던 불확실성에 마침표를 찍는다고 착각했던 탓이었는지, 더 이상 뭔가 하고 싶지가 않았다. 어쩌면 잠시 만족을 했었던 것 같기도.. 그런 연유로 내가 하고 싶었던 일들도 하지 않게 되었다. 가령 내가 복수전공을 해오면서 힘들었던 일들을 적으면서 어떻게 취업준비를 해왔는지를 취준이 막막한 사람들에게 알려주고 싶었기도 했지만 하지 않았다. 물론 회사 일이 바쁘긴 했지만서도 그냥 사는 대로 생각해버렸던 것일지 모르겠다. 아무튼 간만에 생각을 정리할 겸 적어볼까 한다. 1. 취업준비는 어떻게 했는가 그간 주변에서 가장 많이 들었던 말은, 어떻게 입사했냐는 말이었다. 내 답변은 조금 뻔하지만..
취업시즌이 모두 끝나고 오랜만에 블로그에 들어왔다. 꽤나 조회수가 높아져있었던 글은 지난 상반기 삼성리서치 SW개발 불합격 후기였다. 그동안 많은 일들이 있었다. 혼자 눈물을 쏟기도 했었다. 내가 선택한 길이 틀렸을지도 모른다는 불안감으로 하반기를 맞이했고, 정말 정신없는 일 년이 지나갔다. 결국 나는 원하는 기업에 모두 합격하였다. 삼성리서치를 포함해서다. 2학년부터 복수전공을 시작하면서 2년 동안 엄청난 불안감에 사로잡혔던 지난 기간을 생각한다면, 꽤나 큰 고통이 있었다. 4학년을 지내면서 상반기에 인턴 취업에 실패하면서 큰 절망감에 빠졌었기 때문이다. 그러나 1년 동안 매일매일 불안에 떨며 공부하면서 가고 싶다고 외쳤던 기업들에 결국 최종 합격을 하는 것을 지켜보면서, 마음이 좀 이상했다. 친구가 ..
1. Caching 캐싱은 한정된 빠른 공간에 요청된 데이터를 저장했다가 나중에 그 데이터를 요청할 때 바로 제공하는 것. 지금까지 배운 페이징 기법도 캐싱의 한 예이다. page fault는 cache miss인 것이다. paging system 말고도 cache memory, buffer caching, web caching(proxy server)에서도 사용하는 것이 바로 이 캐싱 기법이다. 그리고 캐시를 교체하는 알고리즘의 제약은 당연하게도 존재한다. Buffer caching이나 Web caching의 경우 삭제할 항목을 결정하는 것은 O(1)~O(logn) 안에 결정되어야 한다. 그러나 Paging system에서는 paging 기법을 통해 주소를 변환할 때, 그리고 그 page가 메모리에 이..
얼마 전 5월 12일, 삼성전자 대학생 인턴 직무적합성평가(서류) 전형 결과가 발표되었다. 결론부터 말하면 불합격이다. 그럼에도 글을 쓰는 이유는 훗날 취업준비를 할 때, 지금 느꼈던 감정들을 곱씹으면서 철저히 준비하고자 하기 위함이다. 나는 Samsung Research(SR)에 대학생 전환형 인턴으로 지원하였다. SR은 공채를 폐지했기 때문에 학부생은 오직 대학생 전환형 인턴으로만 입사할 수 있다. 내 정말 친한 친구가 작년에 전환형 인턴으로 SR에 입사하기도 했고, 거기에 더해 SR에 대해 알아볼수록 참 재미있는 연구들을 많이 한다는 걸 알게 되었다. 그 친구가 작년 여름방학부터 SR 생활 얘기를 해주면서 자연스레 나도 SR에 대한 입사 욕구가 샘솟기 시작했고, 어쩌면 이런 이유들로 작년부터 나는 ..
지난 강에서 배운 메모리 주소 변환은 운영체제가 관여하지 않는다고 했었다. 그러나 이 가상 메모리 기법은 전적으로 운영체제가 관여한다. 이번 강은 일단 메모리 관리 기법 중에서 Paging 기법을 사용한다고 가정한다. Demand Paging 요청이 있으면 그 페이지를 메모리에 올리겠다는 뜻이다. 메모리 관리 기법으로서 Paging을 사용하며 어떤 프로세스를 메모리에 올려야 한다고 하자. 이때 프로세스의 모든 페이지를 전부 올리는 것이 아니라 Demand Paging 기법을 사용한다. 이 Demand Paging은 해당 Page가 요청될 때 그 Page를 메모리에 올리는 것을 말한다. 프로그램에서 빈번히 사용되는 부분은 지극히 제한적이다. 잘 만들어진 대부분의 소프트웨어는 대체로 방어적인 코드들이 산재한..
이번 문제는 bof와 유사하긴 하지만 써야 하는 테크닉과 알아야 하는 개념들이 꽤 많다. 특히 ascii 필터 부분 때문에 고생을 꽤나 했다. 이번 문제를 풀기 위해서는 ROP(Return Oriented Programming)에 대한 개념이 있어야 한다. BOF와 유사하니 충분히 이해할 수 있다. ROP를 여기서 설명하기엔 내가 너무 힘들어서 못하겠다.. RTL(Return-to-Libc), RTL Chaining, GOT Overwrite에 대한 개념이 필요하다. 참고 : https://d4m0n.tistory.com/84?category=796362 RTL Chaining : https://hackstoryadmin.tistory.com/entry/ELF-Technique-RTL-Chaining 일..
이해하는데 머리가 터질 뻔했다. 이 블로그를 참조하면서 gdb로 며칠 째 직접 예시를 돌려보고 있었는데 블로그 글대로 나오지 않았다. 현재 gcc는 이 버그를 방지하는 장치가 돼있는 모양이다.. (이건 여러 보호 기법이 걸려있기 때문인데, 이를 해제하고 나의 리눅스 환경에서도 fsb를 실험해보기 위한 설정들을 밑에서 설명할 것) 참조 : eunice fsb 설명 [Format String Attack] 포맷 스트링 공격이란? Format String Attack [1] Format String Attack 서론 2000년도 후반에 해커들 사이에 큰 반향을 일으키 보고서 하나가 발표되었다. Format String Attack... Format String Attack이란 무엇인가? 이것은 기존에.. eu..
- Segmentation 세그먼테이션 기법은 프로세스가 구성하는 주소 공간을 의미 단위로 (Code, Data, Stack,...)으로 쪼갠 것이다. 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의할 수 있고 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능하다. 일반적으로는 당연히 Code, Data, Stack 부분이 하나씩의 세그먼트로 정의된다. Segment는 다음과 같은 logical unit들이다. 즉, 다음과 같은 것들이 Segment가 될 수 있다는 것이다. ex) main(), function, global variables, stack, symbol table, arrays * Segmentation Architecture (세그먼테이션에서 주소 변환) * 이 기법에서 L..
물론 Page Table을 2단계만 사용할 수 있는 건 아니다. 다단계로 사용할 수 있다. 프로세스의 주소 공간은 매우 클 수 있기 때문에 Address Space가 더 커지면 다단계 페이지 테이블이 필요하다. 그것을 Multilevel Paging이라고 한다. 그렇지만 한 번 주소변환을 하려면 여러 개의 페이지 테이블을 거쳐야 하며, 4단계 페이지 테이블의 경우 5번의 메모리 접근이 필요하다(4번은 주소 변환, 1번은 실제 데이터 접근). 예를 들어 메모리 접근 시간이 100ns라면 500ns가 소요될 것이다. 하지만 전 시간에 배운 TLB(Translation Look-aside Buffer)를 이용하면, 대부분의 주소 변환 시간 동안 TLB에서 이루어지기 때문에 그 소요가 적다. TLB hit ra..