앞선 포스팅에서 승인전직을 받기 위한 조건/케이스를 간단하게 다뤄보았다.

뭐 근데 세부적인거 잘 몰라도 1.5년이 지나셨다면 솔직히 크게 걱정할 것 없이 바로 이 포스팅을 보면 된다.

이 포스팅에서는 어떤 과정/단계를 밟아서 전직승인이 되는지 최대한 아는대로 자세히 말해보겠다.

각 단계의 주체를 [ ] 로 표현하였다.

 

1) [본인] 옮겨가고 싶은 회사를 탐색한다.

 

2) [본인] 해당 회사가 "전문연구요원 병역지정업체"에 해당하는지를 확인한다. 
(https://work.mma.go.kr/caisBYIS/search/byjjecgeomsaek.do
여기서 검색이 된다고 하면 해당 업체는 전문연구요원 병역지정업체이다.

여기서, 대소문자 영문자/한문을 완벽하게 작성해야만 검색이 되므로 주의하자.

참고로 전문연구요원과 산업기능요원은 완전히 다른 것이므로, 둘 다 안되는 경우, 둘 중 하나만 되는 경우, 둘 다 되는 경우 등이 있다. 그러므로, 본인이 전문연구요원이라면 전문연구요원을 선택한 후에 검색!

 

3) [본인] 해당 회사에 지원과정을 거쳐 최종합격을 받는다. (이하 새 회사)

 

4) [본인, 새 회사] 최종합격을 받은 후 통상 오퍼레터를 받게 될것이고, 오퍼레터와 함께 채용동의서를 요구한다.

채용동의서는 양식이 년도마다 문서마다 살짝씩 다르다. 내가 갈 회사가 나를 기점으로 전문연구요원을 처음 받는거라면 나도 나서서 양식이라던지 세부사항에 대해서 병무청에 문의하며 도와주는게 좋다.

통상적으로는 인터넷에서 2개의 양식을 찾을 수 있었는데, 둘 중 한개의 양식을 사용하면 된다.

* https://www.mma.go.kr/seoul/board/boardView.do?gesipan_id=26&gsgeul_no=1499720&

* https://www.mma.go.kr/seoul/board/boardView.do?gesipan_id=26&gsgeul_no=1454089& ("복무관리서식" 첨부파일)
참고로 채용동의서에는 내가 작성해야하는 부분도 있다. (성명, 주민등록번호, 아버지 성명, 어머니 성명, 편입일자, 역종)
커뮤니케이션이 귀찮으면 이 부분은 미리 작성해서 넘겨주고 새 회사가 나머지를 채우고 날인을 찍어서 달라고 하면 된다.

 

5) [본인] 채용동의서를 받은 후, 현 회사에 퇴직의사를 밝힌다.

퇴직의사를 밝히는 과정은 보통 실무진 직속 상사(팀장 및 직속 조직장) 에게 보고하는 것을 말하고, 
퇴사결재를 한다는 것은 실제 더 그 위의 인사담당자 및 임원진에게까지 결재 보고를 하는 것을 말한다.

여기서 승인 전에 퇴직의사를 밝히는 이유는 통상 1달의 시간 후에 퇴직이 가능하기 때문이다. 

만약에 현 회사가 통상 회사들과 다르게 하루만에 내가 원하는 날 바로 퇴직이 가능하다면 승인 후에 이야기해도 되긴 한다. 


6) [본인, 현 회사] 내가 전직신청서를 작성한다.
앞서 썼던 링크 중 하나인 
https://www.mma.go.kr/seoul/board/boardView.do?gesipan_id=26&gsgeul_no=1454089&
에 복무관리서식이라는 파일에 있다. 전직신청서에는 현 회사, 개인 복무 정보, 그리고 새 회사에 대한 작성이 필요하므로 본인이 작성하고 현 회사 인사담당자에게 넘겨준다. 현 회사 인사 담당자가 해당 신청서를 확인하고 업체 장의 날인을 찍어줄 것이다.

7) [정리] 채용동의서, 전직신청서, 그 외 필요 서류 등을 현 회사의 인사담당자에게 전달한다.

여기서 그 외라 하면 보통은 개인 복무상황부를 말한다. 출퇴근기록표라고 보면 된다. 출퇴근기록 및 (출퇴근 안한날에 대한 소명이 필요하므로) 휴가기록 이 포함되어야 하는데, 휴가기록을 일일이 대신 작성해주시는 천사 인사담당자님은 보통 거의 없으므로 통상적으로는 휴가기록을 작성해달라고 요청하실거다. 그러면 말을 잘듣고 작성해드려서 복무상황부를 채우는데 도움을 드리자.

8) [현 회사] 현 회사 인사담당자가 전직에 필요한 서류들을 병무청에 전달한다. 

총 3개의 서류가 전달될 예정이다. (전직신청서 / 채용동의서 / 개인복무상황부)

 

9) [병무청] 전직승인을 허가한다.

 

10) [본인, 현 회사] 퇴직일이 반드시 전직승인일 이후가 되도록 한다. 그리고 퇴사를 한다.

 

11) [본인, 새 회사] 새 회사에 입사한다.

9) 이후에 반드시 14일 이내로 새 회사에 입사하여야 한다. 참고로, 병무청 승인이 늦어지는 경우 현 회사의 퇴직일을 어느 정도 조정할 수 있도록 부탁드려야 한다. 

 

------

 

이것으로 단계가 끝난다. 여기서 궁금한것은 아무래도 퇴직일과 관련된 영역일 것이다.

전직승인 후에만 퇴직을 해야 하지만, 문제는 통상 회사는 퇴직 전 한달 전에 보고할 것을 요구한다. 그런데, 이렇게 해버리면 14일 이내 새 회사 입사라는 조건을 지킬 수 없게 된다. 


채용 동의서 확보 > 실무진 퇴직 의사 표명 > 퇴직 결재/보고/상신 > "병무청 승인" > 퇴사 > 새 회사 입사


가 될텐데, 병무청 승인이라는 걸림돌이 있으므로, 퇴직 의사 표명 후에 퇴사 및 새 회사 입사가 불가능해질 수도 있는 것이다. 승인은 어지간하면 조건만 맞으면 해주는 것 같으나, 몇몇 경우와 비전공자라던가 새 회사와 현 회사 사이에 업종이 맞지 않는다거나 하면 승인 불허가 날 수 있다. 즉 마음을 마냥 놓을수는 없다. 

 

즉, 최악의 경우 퇴직 결재 승인됬는데 병무청 승인 불허되버린 경우다. 그치만, 이런 경우 충분히 있을수 있고 이것은 우리의 잘못이 아니기 때문에 이 상황을 확실하게 현 회사가 인지하고 이 경우에는 퇴사를 무를수 있게 해줘야 한다. 보통 통상적으로 회사랑 척을 진게 아니면 그렇게 해준다.
그렇기 때문에 우리가 전세 대출 계약하듯이 어느정도 인사담당자/실무자랑 딜을 해야 한다.


1) 병무청 승인 후 "퇴직 결재/보고/상신~승인" 까지 현 회사가 엄청 빠르게 해 줄 것을 보장받기
  (14일 내로 해줘서 새 회사 입사에 무리없게끔)

or
2) 1달전 혹은 병무청 승인 전에 퇴사 결재를 먼저 올리고 최악의 경우, 퇴직일 변경 혹은 퇴직 자체를 취소 (병무청 승인 불허 경우) 할 수 있는 상황을 보장받기

이상한 회사가 아니라면 그래도 최소한 2번은 하게 해준다. 당연히 근데 그럴거라 믿고 단독행동하면 안되고 이 과정에서 제일 중요한 것은 각 회사의 인사담당자랑 충분한 커뮤니케이션과 상황 공유이다. 필자가 다녔던 회사의 경우 인사담당자께서 통상 2번으로 하신다고 하여서 나도 2번으로 처리하였다. 


만약 2번으로 한다고 가정하면 채용 동의서 후 퇴직 결재를 올리고, 퇴직일로 합의하였던 일자 약 10일전쯤부터 인사담당자가 병무청에 서류를 보내어 퇴사/입사에 문제없게끔 승인 처리를 시도한다. 그 후에 승인이 됬다면 문제가 없는 거고 승인이 안됬다고 하면 그 사이에 퇴사를 유보/취소하는 처리를 함으로써 다시금 원래 회사를 계속 다닐 수 있게 되는 것이다. 아시다시피 이것은 회사가 엄청 나를 잘 봐준 것이므로 회사랑 사이가 너무 안좋거나 하면 쉽지 않을 거다. 어쨌든 미리 말을 잘 받아놓고 시도하는게 좋다.

 

아예 날짜로 말해주자면, (날짜는 예시임)

1월 1일 채용동의서 수령
1월 1일 실무진 직속 상사에게 퇴사 의사 보고
1월 1일 퇴사 결재/보고/상신
1월 20일 병무청 승인 관련 서류 전송 (by 현 회사 인사담당자)
1월 25일 병무청 전직 승인 결정
1월 25일 퇴사 (퇴사 결재를 올린 날과 한달이 안되었으나 현 회사와 딜을 했다는 가정하임. 딜이 안되었다면 이 값이 2월 1일이 되어야 함)

2월 1일 입사 (14일을 풀로 기다리지 않고 7일 뒤에 입사한 케이스)

이런식이 될거다.

개인적인 경험으로는 굳이 14일 풀로 하는 것보다 혹시 모를 상황을 대비해 퇴직일과 입사일을 1주일 떨어뜨려 생각해 두고 진행하는게 제일 베스트다.

쓰레드

 독립적으로 실행되는 코드들의 집합



여러 개의 실이 엮여서 하나의 천을 이루는 것과 같이 여러 개의 독립적으로 수행되는 단위들이 결합하여 하나의 작업을 이루는 것에서 연유. (The name 'thread' is by analogy with the way that a number of threads are interwoven to make a piece of fabric....)


* 쓰레드는 CPU utilization의 기본 단위이며, Light Weight Process(경량 프로세스)라고 부르기도 한다. 

* 쓰레드와 프로세스의 가장 큰 차이는 바로 자신의 주소공간을 가지지 않는다는 것이다. 프로세스는 자신의 프로그램 카운터, 레지스터 값들, 그리고 주소 공간을 가진다. 

* 하지만 쓰레드는 자신의 프로그램 카운터, 레지스터 값만을 가지고 자신의 주소공간은 가지지 않는다. 자신의 주소 공간을 가지지 않는 대신, 다른 쓰레드와 주소 공간을 공유한다.








| 하드웨어 브레이크포인트


하드웨어 브레이크포인트(Hardware Breakpoint)는 설정할 브레이크포인트의 개수가 적을 떄나 디버깅할 소프트웨어의 코드가 변경되면 안될 때 유용하게 사용할 수 있다. 이런 형태의 브레이크포인트는 CPU 레벨에서 브레이크포인트를 설정하는 것이다. 즉, 디버그 레지스터라고 불리는 특별한 레지스터를 이용한다. CPU에는 일반적으로 하드웨어 브레이크포인트를 설정하는 데 사용되는 디버그 레지스터가 8개(DR0~DR7) 있다. DR0에서 DR3까지의 디버그 레지스터는 브레이크포인트의 주소를 저장하기 위해 사용된다. 이는 단지 한 번에 최대 4개까지의 하드웨어 브레이크포인트만을 설정할 수 있다는 뜻이다. 


디버거 레지스터 DR4와 DR5는 예약된 레지스터이고, DR6는 브레이크포인트에 의해 발생되는 디버깅 이벤트의 종류를 판단하기 위해 사용되는 상태 레지스터다. 디버그 레지스터 DR7은 하드웨어 브레이크포인트의 ON/OFF 스위치로 사용되며, 서로 다른 브레이크포인트의 조건도 저장한다. DR7의 특정 플래그값을 설정하면 다음과 같은 조건의 브레이크포인트를 만들어낼 수 있다.


- 지정된 주소의 명령이 실행될 때

- 데이터가 어느 주소에 써질 때

- 어느 주소에 대한 읽기/쓰기 작업이 수행될 때


이처럼 하드웨어 브레이크포인트는 실행 중인 프로세스의 코드를 변경하지 않고 매우 구체적인 조건의 브레이크포인트를 최대 4개까지 설정할 수 있다. 




소프트 브레이크포인트에서는 INT 3 이벤트를 사용하지만 하드웨어 브레이크포인트에서는 INT 1 이벤트를 사용한다. INT 1은 하드웨어 브레이크포인트를 위한 이벤트이며 단일 스텝 이벤트다. 단일 스텝은 각 명령을 하나씩 수행할 수 있다는 의미다. 이는 중요한 부분의 코드와 데이터의 변경 내용을 매우 세밀히 살펴볼 수 있게 한다.


하드웨어 브레이크포인트는 소프트 브레이크포인트와 동일한 방법으로 처리되지만 로우레벨에서 수행된다. CPU는 명령을 실행하기 전에 해당 주소가 하드웨어 브레이크포인트로 설정되어 있는지 먼저 확인한다. 또한 수행할 명령이 하드웨어 브레이크포인트가 설정된 주소에 접근하는지 여부를 확인한다. 해당 주소가 DR0~DR3 레지스터에 저장되어 있고 읽기/쓰기나 실행 조건이 설정되어 있다면 CPU는 명령에 대한 실행을 중지시키고 INT 1 이벤트를 발생시킨다. 해당 주소가 디버그 레지스터에 저장되어 있지 않다면 CPU는 해당 명령을 실행하고 다음 명령으로 이동해 하드웨어 브레이크 포인터 설정 내용을 다시 확인한다.


하드웨어 브레이크포인트는 매우 유용하지만 몇 가지 제약이 있따. 단지 4개의 개별적인 브레이크포인트를 설정할 수 있다는 것과 별개로 브레이크포인트를 설정할 수 있는 데이터의 최대 크기가 4바이트라는 점이다. 이는 큰 메모리 영역에 대한 버근을 추적하고자 하는 경우에는 맞지 않는다. 이런 한계를 극복하려면 메모리 브레이크포인트를 사용해야 한다.











▲ 위와 같이 실행 코드를 일시 중지시키는 기능의 '브레이크포인트'



실행 중인 디버깅 대상 프로세스를 멈추게 하려면 브레이크 포인트를 설정한다. 브레이크포인트에 의해 프로세스가 일시 중지되면 중지된 시점의 변수나 스택 파라미터, 특정 메모리 위치의 값들을 조사해 볼 수 있다. 프로세스를 디버깅할 때 가장 흔히 사용하는 기능이 바로 브레이크포인트다. 브레이크포인트는 세 가지 종류가 있는데, 1) 소프트 브레이크포인트, 2) 하드웨어 브레이크포인트, 3) 메모리 브레이크포인트다. 세 가지 브레이크포인트 모두 유사한 동작을 수행하지만 구현되는 방법은 완전히 다르다.


1) Soft Breakpoint (소프트 브레이크포인트)

2) Hardware Breakpoint (하드웨어 브레이크포인트)

3) Memory Breakpoint (메모리 브레이크포인트)






+ Recent posts