์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
 ์ฃผ์ง€ํ•˜๋‹ค์‹œํ”ผ ํ† ์ต PART 1์—์„œ ๊ฐ์ ์ด ์ƒ๊ธฐ๋ฉด ๊ณ ๋“์ ์„ ์–ป๋Š”๋ฐ ์•„์ฃผ ๊ณจ์น˜์•„ํ”„๊ฒŒ ๋œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜... ์—ฐ์Šต์‚ผ์•„ ํ‘ผ ๋ฌธ์ œ์—์„œ ํ‹€๋ฆฐ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ...
์–ดํœ˜๋ ฅ์ด ๋ถ€์กฑํ•ด์„œ ํ‹€๋ฆฐ๊ฒฝ์šฐ๋‹ค. ์•„๋ž˜๋ฌธ์ œ๋ฅผ ๋ณด์ž...




prism binoculars ๋ฐœ์Œ๋“ฃ๊ธฐ ๋ฐ˜๋ณต๋“ฃ๊ธฐ
prsm binculars[glsses]
ํ”„๋ฆฌ์ฆ˜ ์Œ์•ˆ๊ฒฝ


 

(A) Theyโ€™re looking at each other.
(B) They have cut some of the trees.
(C) The children are in a dense forest.
(D) Theyโ€™re all using binoculars.





์ด๋Ÿฐ ์ƒ์†Œํ•œ ๋‹จ์–ด๊ฐ€ ๋‚˜์˜ค๋‹ค๋‹ˆ.....
๋‚˜๋งŒ ์ƒ์†Œํ•œ๊ฑฐ์•ผ? ๊ทธ๋Ÿฐ๊ฑฐ์•ผ...? ใ… ใ… 
๋ฐ˜์‘ํ˜•

์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•


ํ•ญ์ƒ ... ๋‚  ๊ดด๋กญํžˆ๋Š” ๊ฒƒ์ด ์žˆ๋Š”๋ฐ...

๋ฐ”๋กœ ํ–‰๊ณผ ์—ด์ด๋‹ค.....
์ž๊พธ๋งŒ ํ—ท๊ฐˆ๋ฆฐ๋‹ค. ์–ด๋Š๊ฒƒ์ด ์„ธ๋กœ์ด๊ณ  ์–ด๋Š๊ฒƒ์ด ๊ฐ€๋กœ์ธ์ง€...
์•„๋ž˜์˜ Matrix๋ฅผ ๋ณด์ž...






ํ–‰๋ ฌ์˜ ๊ฐ€๋กœ์ค„์„ ํ•œ์ž์–ด๋กœ ํ–‰์ด๋ผ๊ณ  ํ•˜๊ณ , ์„ธ๋กœ์ค„์„ ์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ–‰๋ ฌ์ด๋ผ๋Š” ์ด๋ฆ„์ด ์œ ๋ž˜ํ–ˆ๋‹ค.

3ํ–‰ 2์—ด์ด๋ฉด ์œ„ ํ–‰๋ ฌ์—์„œ a3,2 ๋˜์‹œ๊ฒ ๋‹ค....






๋„ค์ด๋ฒ„์‚ฌ์ „ ๋˜์‹œ๊ฒ ๋‹ค.

colยทumn

ใ€”โ”‚ใ€• n.
1ใ€๊ฑด์ถ•ใ€‘ ๊ธฐ๋‘ฅ, ์›์ฃผ
   a column of the Doric[Corinthian] style ๋„๋ฆฌ์•„[์ฝ”๋ฆฐํŠธ]์‹ ์›์ฃผ

2 ์›์ฃผ[๊ธฐ๋‘ฅ] ๋ชจ์–‘์˜ ๋ฌผ๊ฑด;(์—ฐ๊ธฐ ๋“ฑ์˜) ๊ธฐ๋‘ฅ
   a column of water ๋ฌผ๊ธฐ๋‘ฅ
   a column of smoke ํ•œ ์ค„๊ธฐ์˜ ์—ฐ๊ธฐ

3ใ€๊ตฐ์‚ฌใ€‘ ์ข…๋Œ€;(ํ•จ๋Œ€์˜) ์ข…๋ ฌ, ์ข…์ง„
   in column of fours[sections, platoons, companies] 4์—ด[๋ถ„๋Œ€, ์†Œ๋Œ€, ์ค‘๋Œ€] ์ข…๋Œ€๋กœ

4aใ€์ธ์‡„ใ€‘ ์ข…ํ–‰(็ธฑ่กŒ), ๋‹จ(ๆฎต)
b (์‹ ๋ฌธ ๋“ฑ์˜) ๋‚œ(ๆฌ„);(์‹ ๋ฌธ์˜) ํŠน์ • ๊ธฐ๊ณ ๋ž€ ใ€Š์‹œํ‰ยท๋ฌธ์˜ˆ๋ž€ ๋“ฑใ€‹
   advertisement columns ๊ด‘๊ณ ๋ž€
   in our[these] columns ๋ณธ๋ž€์—์„œ, ๋ณธ์ง€์ƒ(ๆœฌ็ด™ไธŠ)์—์„œ

cใ€์ปดํ“จํ„ฐใ€‘ ์„ธ๋กœ(์นธ)
5 ใ€Š๋ฏธใ€‹ ใ€์ •์น˜ใ€‘ (๋‹นํŒŒยทํ›„๋ณด์ž์˜) ํ›„์›ํšŒ
6ใ€์‹๋ฌผใ€‘ ๊ฝƒ์ˆ ๋Œ€
column of the nose ์ฝง๋Œ€, ์ฝง๋‚ 
column of water[mercury] ๋ฌผ๊ธฐ๋‘ฅ[์ˆ˜์€์ฃผ]
dodge the column ใ€Š๊ตฌ์–ดใ€‹ ์˜๋ฌด๋ฅผ ๊ฒŒ์„๋ฆฌํ•˜๋‹ค
clยทumned a.
โ–ท colmnar a.





๊ตฌ๊ธ€์—์„œ ํผ์˜จ ์ด๋ฏธ์ง€ ๋˜์‹œ๊ฒ ๋‹ค.

Column

๊ทธ๋ ‡๋‹ค. ๊ธฐ๋‘ฅ์ด๋‹ค. ์„ธ๋กœ๋กœ ์„œ์žˆ๋Š” ๊ธฐ๋‘ฅ. ๊ฐ€๋กœ๋กœ ์„œ์žˆ๋Š” ๊ธฐ๋‘ฅ์€ ์—†์ง€ ์•Š์€๊ฐ€?

์ด ์ด๋ฏธ์ง€๋ฅผ ๋จธ๋ฆฟ์†์— ํ™•์‹คํžˆ ๋ฐ•์•„๋‘๋ฉด ์ ˆ๋Œ€ ํ–‰๊ณผ ์—ด(Row์™€ Column)์„ ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ผ์ด ์—†์„๊ฒƒ์ด๋‹ค.



ROW

ํ…Œ์ด๋ธ”๋‚ด์— ๊ฐ€๋กœ์ค„ ํ•˜๋‚˜๋ฅผ ROW๋ผ๊ณ  ํ•˜์ง€ ์•Š๋Š”๊ฐ€?^^









Don't be confused with this anymore, guys!!!!


๋ฐ˜์‘ํ˜•

์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

/****************************************
  PL/SQL syntax ์ •๋ฆฌ
*****************************************/

----------------------------------------------------------
-       * syntax ๊ธฐํ˜ธ                                                          
-                                                                                    
-         [] : ๋Œ€๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์ด ์ƒ๋žต๊ฐ€๋Šฅ                              
-          | : ๋˜๋Š”                                                                
-         {} : ์ค‘๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์ด ํ•˜๋‚˜ ์ด์ƒ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.              
-        ... : ์•ž ํ‘œ๊ธฐ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋” ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.                  
-          , : ๊ตฌ๋ถ„์ž                                                              
----------------------------------------------------------


* ๊ธฐ๋ณธ๊ตฌ์กฐ
  declare : ์‹คํ–‰๋ถ€์—์„œ ์ฐธ์กฐํ•  ๋ชจ๋“  ๋ณ€์ˆ˜, ์ƒ์ˆ˜, ์ปค์„œ, exception์„ ์„ ์–ธ
       variables, cursor, user_defined, exception

  begin : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  sql๋ฌธ๊ณผ pl/sql๋ธ”๋ก์„ ๊ธฐ์ˆ 
       sql, pl/sql statements;

  exception : ์‹คํ–‰๋ถ€์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ์ˆ˜ํ–‰๋  ๋ฌธ์žฅ์„ ๊ธฐ์ˆ 
       actions to perform wher erros occur
  end;


* anonymous
syntax : [declare]
            begin
                   statements;
                   statements;
                   statements;
            [exception]
            end;


* procedure
syntax : create procedure procedure_name
            is
            begin
                   statements;
                   statements;
            [exception]
            end;


* function
syntax : create function function_name
            return datatype
            is
            begin
                  statements;
                  statements;
                  return value;
            [exception]
            end;


* PL/SQL ๋ณ€์ˆ˜
  1) scalar : ์ฃผ๋กœ ๋‹จ์ผ๊ฐ’์„ ๋ณด์œ . ์ฃผ์š” ๋ฐ์ดํ„ฐํ˜•์€ ์˜ค๋ผํด ์„œ๋ฒ„ ํ…Œ์ด๋ธ”์˜ ์—ด ์œ ํ˜•์— ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค.
  2) composite : ๋ ˆ์ฝ”๋“œ ๊ฐ™์€ ์กฐํ•ฉ ๋ฐ์ดํ„ฐํ˜•์€ PL/SQL๋ธ”๋Ÿญ์—์„œ ์กฐ์ž‘๋˜๊ณ  ์ •์˜๋˜๋Š” ํ•„๋“œ๊ทธ๋ฃน์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3) reference : ์ฐธ์กฐ๋ฐ์ดํ„ฐํ˜•์€ pointer๋ผ ๋ถˆ๋ฆฌ๋ฉฐ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ ํ•ญ๋ชฉ์„ ์ง€์‹œํ•˜๋Š” ๊ฐ’์„ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค.
  4) LOB(Large Objects) : LOB๋ฐ์ดํ„ฐํ˜•์€ locator๋ผ ๋ถˆ๋ฆฌ๋ฉฐ ๋ผ์ธ ๋ฐ–์—์„œ ์ง€์ •๋œ ํฐ ๊ฐ์ฒด์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฐ’์„ ๋ณด์œ 


 

* PL/SQL ๋ณ€์ˆ˜ ์„ ์–ธ
  syntax : identifier [constant] datatype [not null] [:= | default expression];
  - identifier : ๋ณ€์ˆ˜์˜ ์ด๋ฆ„
  - constant : ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋„๋ก ์ œ์•ฝ (์ƒ์ˆ˜)
  - datatype : scalar, composite, reference, lob(large objects)
  - not null : ๊ฐ’์„ ํฌํ•จํ•ด์•ผ๋งŒ ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜๋ฅผ ์ œ์•ฝ
  - expression : literal, ๋‹ค๋ฅธ ๋ณ€์ˆ˜, ์—ฐ์‚ฐ์ž๋‚˜ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ํ‘œํ˜„์‹


* ๋ณ€์ˆ˜ ๊ฐ’ ์ง€์ •
  syntax : identifier := expression;


* ๊ธฐ๋ณธ ์Šค์นผ๋ผ ๋ฐ์ดํ„ฐ ํ˜•
  - varchar2(n) : ๋ณ€์ˆ˜๊ธธ์ด ๋ฌธ์ž ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธํ˜•์€ 32767Byte๊นŒ์ง€ ๋””ํดํŠธ ํฌ๊ธฐ๋Š” ์—†๋‹ค.
  - number(p,s) : ๊ณ ์ •๊ณผ ์œ ๋™ํฌ์ธํŠธ ์ˆซ์ž์— ๋Œ€ํ•œ ๊ธฐ๋ณธํ˜• ์†Œ์ˆ˜์  ์ด์ƒ p์ž๋ฆฌ, ์†Œ์ˆ˜์  ์ดํ•˜ s์ž๋ฆฌ
  - date : ๋‚ ์งœ์™€ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ๊ธฐ๋ณธํ˜•, date๊ฐ’์€ ์ง€์ • ์ดํ›„์˜ ์ดˆ ๋‹จ์œ„๋กœ ๋‚ ์— ๋Œ€ํ•œ ์‹œ๊ฐ„์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋‚ ์งœ์˜ ๋ฒ”์œ„๋Š” bc4712๋…„ 1์›”1์ผ ๋ถ€ํ„ฐ ad9999๋…„ 12์›” 31์ผ ์‚ฌ์ด
  - char(n) : ๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž์— ๋Œ€ํ•œ ๊ธฐ๋ณธํ˜•์€ 32767Byte๊นŒ์ง€. ๋””ํดํŠธ๊ธธ์ด๋Š” 1
  - long : ๊ณ ์ •๊ธธ์ด ๋ฌธ์ž์— ๋Œ€ํ•œ ๊ธฐ๋ณธํ˜•์€ 32767Byte๊นŒ์ง€ long์€ ์ตœ๋Œ€ 2147483647Byte๊นŒ์ง€
  - long raw : ์ด์ง„ ๋ฐ์ดํ„ฐ์™€ ๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ๊ธฐ๋ณธํ˜•์€ 32767Byte๊นŒ์ง€ long raw๋Š” PL/SQL์— ์˜ํ•ด ํ•ด์„๋˜์ง€ ์•Š์Œ
  - boolean : true, false, null์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’
  - binary_integer : -2147483647~2147483637์‚ฌ์ด์˜ ์ •์ˆ˜
  - pls_integer : -2147483647~2147483637์‚ฌ์ด์˜ ์ •์ˆ˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธํ˜• ์ ์€ ๊ธฐ์–ต์žฅ์น˜๋ฅผ ํ•„์š”๋กœํ•จ


* %type ์†์„ฑ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ์—ด์ด ๊ฐ€์ง„ type์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
  syntax : variable_name table_name.column_name%type


* table type :๋ฐฐ์—ด์˜ ๊ฐœ๋… (ํ…Œ์ด๋ธ”์˜ ๋‘ ์ปฌ๋Ÿผ์„ ์ธ๋ฑ์Šค์™€ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ)
  syntax : type table_type_name is table of
              {column_type | variable%type | table.column%type} [not null]
              [index by binary_integer];
              identifier table_type_name;

  - table_type_name : ํ…Œ์ด๋ธ”ํ˜•์˜ ์ด๋ฆ„
  - column_type : varchar2, date, number์™€ ๊ฐ™์€ ์Šค์นผ๋ผ๋ฐ์ดํ„ฐํ˜•
  - identifier : ์ „์ฒด PL/SQLํ…Œ์ด๋ธ”์„ ๋‚˜ํƒ€๋‚ด๋Š” ์‹๋ณ„์ž์˜ ์ด๋ฆ„


* record type: ๊ตฌ์กฐ์ฒด ๊ฐœ๋…, ํ…Œ์ด๋ธ”์˜ row์ „์ฒด๋ฅผ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐํ˜•์œผ๋กœ ๋‚˜ํƒ€๋ƒ„
  syntax : type type_name is record
              (field_name1 {scalar_datatype|record_type} [not null] [{:=|default} expr],
              (field_name2 {scalar_datatype|record_type} [not null] [{:=|default} expr]
              ...);
              identifier_name type_name;

  - type_name : recordํ˜•์˜ ์ด๋ฆ„, ์ด ์‹๋ณ„์ž๋Š” record๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  - field_name : record๋‚ด์˜ ํ•„๋“œ๋ช…
  - record๋ฅผ ์ฐธ์กฐ : record_name.field_name


* %rowtype ์†์„ฑ: ํ…Œ์ด๋ธ”์˜ ์—ด์„ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ
  syntax : identifier reference%rowtype
  - ๊ฐœ๋ณ„ํ•„๋“œ์ฐธ์กฐ : record_name.field_name


* LOB ๋ฐ์ดํ„ฐํ˜•(๊ฐ 4GByte๊นŒ์ง€)
  1) CLOB(Character large object) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚ด์˜ ๋‹จ์ผ ๋ฐ”์ดํŠธ ๋ฌธ์ž ๋ฐ์ดํ„ฐ์˜ ๋Œ€ํ˜•๋ธ”๋Ÿญ์„ ์ €์žฅ
  2) BLOB(Binary large object) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋Œ€ํ˜• ์ด์ง„๊ฐ์ฒด๋ฅผ ์ €์žฅ
  3) BFILE (Binary file) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์™ธ๋ถ€์˜ ์šด์˜์‹œ์Šคํ…œ ํŒŒ์ผ์˜ ๋Œ€ํ˜• ์ด์ง„๊ฐ์ฒด ์ €์žฅ
  4) NCLOB(national language character large object) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚ด์˜ ๋‹จ์ผ๋ฐ”์ดํŠธ, ๋˜๋Š” ๊ณ ์ • ๊ธธ์ด์˜ ๋ฉ€ํ‹ฐ๋ฐ”์ดํŠธ nchar๋ฐ์ดํ„ฐ๋ฅผ ํ–‰์˜ ์•ˆํŒŽ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ


* ๋ฐ”์ธ๋“œ(bind) ๋ณ€์ˆ˜ :SQL*PLUS์—์„œ์˜ ๋ณ€์ˆ˜๋ฅผ PL/SQL์—์„œ ์‚ฌ์šฉ
  syntax : var[iable] [variable [number | char(n) | varchar2(n)]]


* ํ˜ธ์ŠคํŠธ(host) ๋ณ€์ˆ˜: ํ˜ธ์ŠคํŠธ์šด์˜์ฒด์ œ์˜ ๋ณ€์ˆ˜๋ฅผ PL/SQL์—์„œ ์‚ฌ์šฉ
  syntax : :variable_name


* ๊ตฌ๋ถ„๋ฌธ์ž
  + : ๋ง์…ˆ์—ฐ์‚ฐ์ž
  - : ๋บ„์…ˆ์—ฐ์‚ฐ์ž
  * : ๊ณฑ์…ˆ์—ฐ์‚ฐ์ž
  / : ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์ž
  = : ๊ด€๊ณ„ํ˜•์—ฐ์‚ฐ์ž
  @ : ์›๊ฒฉ์—‘์„ธ์Šค์ง€์‹œ์ž
  ; : ๋ฌธ์žฅ์ง€์‹œ์ž
  <> : ๊ด€๊ณ„ํ˜• ์—ฐ์‚ฐ์ž (๊ฐ™์ง€์•Š๋‹ค)
  != : ๊ด€๊ณ„ํ˜• ์—ฐ์‚ฐ์ž (๊ฐ™์ง€์•Š๋‹ค)
  || : ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž
  -- : ๋‹จ์ผ๋ผ์ธ ์ฃผ์„
  /* */ : ๋ฉ€ํ‹ฐ๋ผ์ธ ์ฃผ์„
  := : ์ง€์ •์—ฐ์‚ฐ์ž(๋Œ€์ž…)


* ๋ฐ์ดํ„ฐํ˜• ๋ณ€ํ™˜ ํ•จ์ˆ˜
  1) to_char(value, format) : value๋ฅผ ๋ฌธ์ž๋กœ ์ „ํ™˜
  2) to_date(value, format) : value๋ฅผ ๋‚ ์งœํ˜•์‹์œผ๋กœ ์ „ํ™˜
  3) to_number(value, format) : value๋ฅผ ์ˆซ์ž๋กœ ์ „ํ™˜


* PL/SQL์˜ ์—ฐ์‚ฐ์ž์™€ ์šฐ์„ ์ˆœ์œ„
  1) **, not : ์ง€์ˆ˜์Šน, ๋…ผ๋ฆฌ๋ถ€์ •
  2) +, - : ์‹๋ณ„, ๋ถ€์ •์—ฐ์‚ฐ์ž
  3) *, / : ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ
  4) +, -, || : ๋ง์…ˆ, ๋บ„์…ˆ, ์—ฐ๊ฒฐ
  5) =, !=, <, >, <=, >=, is null, like, between, in : ๋น„๊ต์—ฐ์‚ฐ์ž
  6) and : ๋…ผ๋ฆฌ๊ณฑ
  7) or : ๋…ผ๋ฆฌํ•ฉ


* ์ฝ”๋“œ๊ทœ์•ฝ (๊ถŒ์žฅ)
  - ๋Œ€๋ฌธ์ž : sql๋ช…๋ น์–ด, pl/sqlํ‚ค์›Œ๋“œ, ๋ฐ์ดํ„ฐํ˜•
  - ์†Œ๋ฌธ์ž : ์‹๋ณ„์ž, ๋งค๊ฐœ๋ณ€์ˆ˜, ํ…Œ์ด๋ธ”๋ช…, ์—ด๋ช…


* ์ฝ”๋“œ๋ช… ์ง€์ •๊ทœ์•ฝ (๊ถŒ์žฅ)
  - ๋ณ€์ˆ˜ : v_name
  - ์ƒ์ˆ˜ : c_name
  - ์ปค์„œ : name_cursor
  - ์˜ˆ์™ธ : e_name
  - ํ…Œ์ด๋ธ”ํ˜• : name_table_type
  - ํ…Œ์ด๋ธ”๋ช… : name_table
  - ๋ ˆ์ฝ”๋“œํ˜• : name_record_type
  - ๋ ˆ์ฝ”๋“œ๋ช… : name_record
  - SQL*PLUS ์น˜ํ™˜ ๋งค๊ฐœ๋ณ€์ˆ˜ : p_name
  - SQL*PLUS ์ „์—ญ๋ณ€์ˆ˜ : g_name


* PL/SQL์—์„œ์˜ select
  - ๋‹จ์ผํ–‰์„ ๋ฆฌํ„ดํ•˜๋Š” select๋งŒ ์‚ฌ์šฉ

  syntax : select select_list
              into {variable_name1[.variable_name2, ...] | record_name}
              from table_name
              where condition;


* cursor ์†์„ฑ
  - sql*rowcount : ๊ฐ€์žฅ ์ตœ๊ทผ์˜ sql๋ฌธ์žฅ์— ์˜ํ•ด ์˜ํ–ฅ์„ ๋ฐ›์€ ํ–‰์˜ ์ˆ˜
  - sql%found : ๊ฐ€์žฅ ์ตœ๊ทผ์˜ sql๋ฌธ์žฅ์ด ํ•˜๋‚˜ ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ํ–‰์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค๋ฉด true
  - sql%notfound : ๊ฐ€์žฅ ์ตœ๊ทผ์˜ sqlใ„ด๋ฌธ์žฅ์ด ์–ด๋–คํ–‰์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•˜๋‹ค๋ฉด true
  - sql%isopen : PL/SQL์ด ์‹คํ–‰๋œ ํ›„์— ์ฆ‰์‹œ ์•”์‹œ์  ์ปค์„œ๋ฅผ ๋‹ซ๊ธฐ๋•Œ๋ฌธ์— ํ•ญ์ƒ true


* if
  syntax : if condition then
                 statements;
              [elsif condition then]
                statements;
              else
                 statements;
              end if;

* loop
  syntax : loop
                 statement1;
                 statement2;
                 ...
              exit [when condition];
              end loop;


* exit๋ฌธ
  syntax : exit [when condition];


* for loop
  syntax : for index_counter in [reverse] lower_bound..upper_bound loop
                 statement1;
                 statement2;
                 ...
              end loop;

  - index_counter : upper_bound๋‚˜ lower_bound์— ๋„๋‹ฌํ• ๋•Œ๊นŒ์ง€ loop๋ฅผ ๋ฐ˜๋ณตํ•จ์œผ๋กœ์จ 1์”ฉ ์ž๋™์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†Œ๋˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ์•”์‹œ์ ์œผ๋กœ ์„ ์–ธ๋œ ์ •์ˆ˜
  - reverse : upper_bound์—์„œ lower_bound๊นŒ์ง€ ๋ฐ˜๋ณตํ•จ์œผ๋กœ์จ ์ธ๋ฑ์Šค๊ฐ€ 1์”ฉ ๊ฐ์†Œ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  - lower_bound : index_counter๊ฐ’์˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ํ•˜๋‹จ๋ฐ”์šด๋“œ
  - upper_bound : index_counter ๊ฐ’์˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ƒ๋‹จ ๋ฐ”์šด๋“œ


* while loop
  syntax : while condition loop
                 statement1;
                 statement2;
                 ...
              end loop;


* cursor
  - ์•”์‹œ์  cursor
    sql%rowcount : ์ง€๊ธˆ๊นŒ์ง€ ๋ฆฌํ„ด๋œ ํ–‰์˜ ์ด ์ˆ˜(number)
    sql%found : ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ธ์ถœ(fetch)๊ฐ€ ํ–‰์„ ๋ฆฌํ„ดํ•˜๋ฉด true (boolean)
    sql%notfound : ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ธ์ถœ(fetch)๊ฐ€ ํ–‰์„ ๋ฆฌํ„ดํ•˜์ง€ ์•Š์œผ๋ฉด true (boolean)
    sql%isopen : cursor๊ฐ€ ์—ด๋ฆฌ๋ฉด true

  - ๋ช…์‹œ์  cursor : ์„ ์–ธ, open, fetch into, close
  syntax : cursor cursor_name is
                  select_statement;
              open cursor_name;
              fetch cursor_name into {variable1[,variable2, ...] | record_name};
              close cursor_name;


* cursor์™€ for loop
  syntax : for record_name in cursor_name loop
                 statement1;
                 statement2;
                 ...
              end loop;


* subquery๋ฅผ ์‚ฌ์šฉํ•œ cursor for loop
  syntax : for record_name in (subquery) loop
                 statement1;
                 statement2;
                 ...
              end loop;


* ๋งค๊ฐœ๋ณ€์ˆ˜์™€ cursor
  syntax : cursor cursor_name [(parameter_name1 datatype, ...)] is
                 select_statement;
              cursor_parameter_name [in] datatype [{:= | default} expression]


* for update์ ˆ
  syntax : cursor cursor_name is
                 select_statement
                 for update [nowait] [of column1[,column2,...]];


* ์ •์˜๋œ oracle server ์—๋Ÿฌ
  - access_into_null(ora-06530) : ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด์˜ ์†์„ฑ์— ๋Œ€ํ•ด ๊ฐ’์„ ์ง€์ •ํ•˜๋ ค๊ณ  ํ•จ
  - collection_is_null(ora-06531) : ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ์ค‘์ฒฉ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด exists๋ฅผ ์ œ์™ธํ•œ ๋ฉ”์†Œ๋“œ ๋ชจ์Œ์˜ ์ ์šฉ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  - cursor_already_open(ora-06511) : ์ด๋ฏธ ์—ด๋ฆฐ ์ปค์„œ์˜ ์—ด๊ธฐ๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  - dup_val_on_index(ora-00001) : ์ค‘๋ณต๊ฐ’์˜ ์‚ฝ์ž…์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  - invalid_cursor(ora-01001) : ์ž˜๋ชป๋œ ์ปค์„œ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  - invalid_number(ora-01722) : ์ˆ˜์˜ ๋ฌธ์ž์—ด ์ „ํ™˜์€ ์‹คํŒจ์ž…๋‹ˆ๋‹ค.
  - login_denied(ora-01017) : ์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž๋ช…๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์˜ค๋ผํด์— ๋กœ๊ทธ์˜จํ•ฉ๋‹ˆ๋‹ค.
  - no_data_found(ora-01403) : ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜์ง€ ์•Š๋Š” select๋ฌธ์žฅ
  - not_logged_on(ora-01012) : PL/SQL์€ ๋‚ด๋ถ€๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  - program_error(ora-06501) : PL/SQL์€ ๋‚ด๋ถ€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  - rowtype_mismatch(ora-06504) : ์ง€์ •๋ฌธ์— ํฌํ•จ๋œ ํ˜ธ์ŠคํŠธ ์ปค์„œ๋ณ€์ˆ˜์™€ PL/SQL์ปค์„œ๋ณ€์ˆ˜์˜ ๋ฆฌํ„ด์œ ํ˜•์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  - storage_error(ora-06500) : PL/SQL์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค ์จ๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ›ผ์†๋จ
  - subscript_beyond_count(ora-06533) : ๋ชจ์Œ์˜ ์š”์†Œ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋” ํฐ ์ธ๋ฑ์Šค ๊ฐœ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ค‘์ฒฉํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
  - subscript_outside_limit(ora-06532) : ๋ฒ”์œ„ ๋ฐ–์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์ฒฉํ…Œ์ด๋ธ”์„ ์ฐธ์กฐ
  - timeout_on_resource(ora-00051) : oracle์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€๊ธฐํ•˜๋Š” ๋™์•ˆ ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฐœ์ƒ
  - too_many_rows(ora-01422) : ๋‹จ์ผํ–‰ select๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ–‰์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
  - value_error(ora-06502) : ๊ณ„์‚ฐ, ๋ณ€ํ™˜, ์ ˆ๋‹จ, ๋˜๋Š” ํฌ๊ธฐ์ œ์•ฝ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ
  - zero_devide(ora-01476) : 0์œผ๋กœ ๋ฐฐ๋ถ„์„ ์‹œ๋„


* ๋ฏธ๋ฆฌ ์ •์˜๋˜์ง€ ์•Š์€ ์˜ค๋ผํด ์„œ๋ฒ„ ์—๋Ÿฌ
  - ์„ ์–ธ
    syntax : exception_name exception;

  - pragma exception_init๋ฌธ์žฅ์„ ์‚ฌ์šฉํ•ด ํ‘œ์ค€์—๋Ÿฌ๋ฒˆํ˜ธ์™€ ์„ ์–ธ๋œ ์˜ˆ์™ธ๋ฅผ ์—ฐ๊ฒฐ
    syntax : exception_init(exception_name, error_number)


* ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ
  - ์„ ์–ธ
    syntax : exception_name exception;

  - ๋ช…์‹œ์ ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด
    syntax : raise exception_name;


* ์˜ˆ์™ธ ํŠธ๋ž˜ํ•‘ ํ•จ์ˆ˜
  - sqlcode : ์—๋Ÿฌ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ˆซ์ž๋ฅผ ๋ฆฌํ„ด
  - sqlerrm : ์—๋Ÿฌ ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋ฆฌํ„ด


* SQL์ฝ”๋“œ ๊ฐ’
  - 0 : ์˜ˆ์™ธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  - 1: ์‚ฌ์šฉ์ž์ •์˜ ์—๋Ÿฌ๋ฒˆํ˜ธ
  - +100 : no_data_found
  - ์–‘์˜ ์ •์ˆ˜ : ํ‘œ์ค€ ์—๋Ÿฌ๋ฒˆํ˜ธ


* ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋‚ด์—์„œ ์˜ˆ์™ธ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ
  syntax : raise_application_error(error_number, message[,{true|false}]);


* procedure
  syntax : create [or replace] procedure procedure_name
                 [(argument1 [mode1] datatype [{:= | default} expression]
                 [(argument1 [mode1] datatype [{:= | default} expression], ...])]
                 {is | as}
              begin
                 pl/sql block;
              end;

  - or replace : procedure_name์ด ์กด์žฌํ•  ๊ฒฝ์šฐ procedure์˜ ๋‚ด์šฉ์„ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ์ƒ์„ฑ
  - procedure_name : procedure๋ช…
  - argument : ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„
  - mode : 3๊ฐ€์ง€ (in:์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ)
                       (out:์ถœ๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ)
                       (in out : ์ž…์ถœ๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ)
  - pl/sql block : procedure๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” pl/sql์˜ ๋ธ”๋Ÿญ


 

* function
  syntax : create [or replace] function function_name
                 [(argument1 [mode1] datatype [{:= | default} expression]
                 [(argument1 [mode1] datatype [{:= | default} expression], ...])]
                 return data_type
                 {is | as}
              begin
                 pl/sql block;
              end;

  - or replace : procedure_name์ด ์กด์žฌํ•  ๊ฒฝ์šฐ procedure์˜ ๋‚ด์šฉ์„ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ์ƒ์„ฑ
  - procedure_name : procedure๋ช…
  - argument : ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„
  - mode : 3๊ฐ€์ง€ (in:์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ)
                       (out:์ถœ๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ)
                       (in out : ์ž…์ถœ๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ)
  - data_type : ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์˜ datatype
  - pl/sql block : procedure๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” pl/sql์˜ ๋ธ”๋Ÿญ


* procedure์™€ function ๋น„๊ต
  - procedure : pl/sql๋ฌธ์œผ๋กœ์„œ ์‹คํ–‰, ๋ฆฌํ„ด๋ฐ์ดํ„ฐํ˜• ์—†์Œ, ๊ฐ’์„ ๋ฆฌํ„ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  - function : ์‹์˜ ์ผ๋ถ€๋กœ์„œ ์‚ฌ์šฉ, ๋ฆฌํ„ด๋ฐ์ดํ„ฐํ˜• ํ•„์ˆ˜, ๋ฐ˜๋“œ์‹œ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์•ผํ•จ


* trigger
  syntax : create [or replace] trigger trigger_name
                 {before | after} triggering_event [of column1, ...] on table_name
                 [for each row [when trigger_condition]             
                 trigger_body;

  - trigger_name : trigger์˜ ์‹๋ณ„์ž
  - before | after : DML๋ฌธ์žฅ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— trigger๋ฅผ ์‹คํ–‰ํ•  ๊ฒƒ์ธ์ง€ ์‹คํ–‰๋œ ํ›„์— trigger๋ฅผ ์‹คํ–‰ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ •์˜
  - triggering_event : DML(insert, update, delete)
  - of column : trigger๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ์ปฌ๋Ÿผ๋ช…์„ ๊ธฐ์ˆ ํ•œ๋‹ค.
  - table name : trigger๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ…Œ์ด๋ธ” ๋ช…
  - for each row : ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํ–‰ ๋ ˆ๋ฒจ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋˜์–ด triggering๋ฌธ์ž์— ์˜ํ–ฅ๋ฐ›์€ ํ–‰์— ๋Œ€ํ•ด ๊ฐ๊ฐ ํ•œ๋ฒˆ์”ฉ ์‹คํ–‰ํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์žฅ๋ ˆ๋ฒจ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋˜์–ด DML๋ฌธ์žฅ๋‹น ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰๋œ๋‹ค.


* trigger operation๊ฒฐ์ •ํ•˜๋Š” ์„ธ๊ฐ€์ง€ ํ•จ์ˆ˜
  - inserting : ํŠธ๋ฆฌ๊ฑฐ๋ง ๋ฌธ์žฅ์ด insert์ด๋ฉด true
  - updating : ํŠธ๋ฆฌ๊ฑฐ๋ง ๋ฌธ์žฅ์ด update์ด๋ฉด true
  - deleting : ํŠธ๋ฆฌ๊ฑฐ๋ง ๋ฌธ์žฅ์ด delete์ด๋ฉด true


 

* trigger ์ œ๊ฑฐ / ํ™œ์„ฑํ™”์„ ํƒ
  - ์ œ๊ฑฐ
     syntax : drop trigger trigger_name

  - ํ™œ์„ฑํ™”์„ ํƒ
     syntax : alter trigger trigger_name {disable | enable};

์ถœ์ฒ˜ - http://fly32.net/255

๋ฐ˜์‘ํ˜•

์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

****์†Œ์Šค ์›ํ•˜์‹œ๋Š”๋ถ„์€ ๋Œ“๊ธ€์— ๋‚จ๊ฒจ์ฃผ์‹œ๊ธธ.


๋™์˜์ƒ ์„ค๋ช…

ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๋ฉด, ๋‘ ๊ฐœ์˜ ํ๋ธŒ๊ฐ€ ๊ฒน์ณ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐœ์˜ ์ค‘์‹ฌํ๋ธŒ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 3D T,R,S๋ณ€ํ™˜์„ ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค๋Š” ์œ„์˜ ์„ค๋ช…๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์นด๋ฉ”๋ผ๊ฐ€ (300, 600, 600)์—์„œ ์›์ ์„ ๋ฐ”๋ผ๋ณด๊ฒŒ ํ•˜์˜€์œผ๋ฉฐ,

์นด๋ฉ”๋ผ์˜ ์ด๋™ ๋ฐ ํšŒ์ „์€ ๋‹ค์Œ์ˆ™์ œ๋ฅผ ์œ„ํ•ด ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

3D๋ณ€ํ™˜์„ ์‰ฝ๊ฒŒ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด x,y,z์ถ•์˜ ์„ ์„ ๊ทธ์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ํ˜„์žฌ์˜ ์ƒํƒœ๋ฅผ ์ •๋Ÿ‰์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ๋ณ€ํ™˜์˜
์•ก์…˜ ๋ฐ ์ขŒํ‘œ๋ฅผ ํ‚ค๋ฅผ ๋ˆ„๋ฅผ๋•Œ ๋งˆ๋‹ค ์ฝ˜์†”์ฐฝ์— ๋”ฐ๋กœ ์ถœ๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.(๊ทธ๋ฆผ1๊ณผ ๊ฐ™์Œ)




ํ‚ค ์„ค๋ช…


 

 

 


๋””์Šค์ปค์…˜

3D๋ณ€ํ™˜์„ ์œ„ํ•œ Composite Matrix๋Š” ์‹ค์Šต์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๊ณ , ๋‹ค์–‘ํ•œ ํผํฌ๋จผ์Šค๋ฅผ ๋‚ด๊ธฐ ์œ„ํ•ด ์ค‘์‹ฌํ๋ธŒ๋„ ์ด๋™ ๊ฐ€๋Šฅ ํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. DisplayFunc ํ•จ์ˆ˜์— ๊ทธ๋ฆฌ๋Š” ์ˆœ์„œ๋ฅผ ์œ ์ €๊ฐ€ ์ž์—ฐ ์ƒํƒœ์—์„œ ๋ณด๋“ฏ์ด ํ•˜๊ธฐ์œ„ํ•ด ์ค‘์‹ฌํ๋ธŒ์™€ ๋ฌด๋น™ํ๋ธŒ์˜ ์ค‘์‹ฌ์ขŒํ‘œ๋ฅผ ๋น„๊ต ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ๋ฌด๋น™ํ๋ธŒ์˜ ํฌ๊ธฐ๊นŒ์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋ฒˆ๊ณผ์ œ์˜ ์ด์Šˆ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฐจํ›„ ๊ณ ๋ฏผ๊ฑฐ๋ฆฌ๋กœ ๋‚จ๊ฒจ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์ˆ˜์ ์— ์˜ํ•ด ์ขŒํ‘œ๋“ค์˜ ๊ฐ’์ด ๋ฏธ์†Œ๋Ÿ‰ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3D๋ณ€ํ™˜ ์ˆ˜ํ–‰์„ ์•„์ฃผ ๋งŽ์ด ํ•˜๊ฒŒ ๋˜๋ฉด(ํ˜น์€ ํšŒ์ „ํ›„์— ํฌ๊ธฐ๋ณ€ํ™”์„ ํ•  ๊ฒฝ์šฐ), ๊ฐ•์ฒด๊ฐ€ ํ‹€์–ด์ง€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ณผ์ œ๋ฅผ ํ†ตํ•ด ๋‹ค์†Œ ์ง๊ด€์ ์ด์ง€ ์•Š์€ 3D ๋ณ€ํ™˜์˜ ๊ณ„์‚ฐ ๋ฐ ์›๋ฆฌ๋ฅผ ์ˆ™๋‹ฌํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ, ์‹œ๊ฐ„์ด ํ—ˆ๋ฝํ•˜๋ฉด OPENGL์ž์ฒด 3D๋ณ€ํ™˜ ํ•จ์ˆ˜๋“ค๊ณผ ํšจ์œจ์„ฑ์„ ๋น„๊ตํ•ด๋ณผ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

http://www.ybm.co.kr/ybm_admin/upload/news/ETS%20TOEIC.jpg


TOEIC ๋‹ต์•ˆ

2008๋…„ 10์›” 26์ผ ์‹œํ–‰

16:18๋ฒ„์ „

Listening comprehension(์ˆ˜์ •! ์™„๋ฒฝํŒ)

14332/23133/13121/31221/21312/23132/23221/12311/43234/22143/

32224/32314/14221/22124/32131/12434/41143/23124/12344/21424


Reading comprehension(์•„์ง ์™„๋ฒฝํŒ์•„๋‹˜)

12211/ 31412/ 13122/ 11142/ 43431/ 12421/ 12323/ 44423/ 22114/ 33434/

33321/ 43442/ 31233/ 34322/ 14234/ 33414/ 34122/ 21344/ 14322/ 34434




๋ฐ˜์‘ํ˜•

์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
 ์‹ธ์ด์›”๋“œ์˜ ๋ณด์•ˆ์œ„ํ˜‘์ด ํ™”๋‘๊ฐ€ ๋˜๊ณ  ์žˆ๋‹ค.

๋‚ด์ •๋ณด ์ƒˆ๋Š” ๋ฏธ๋‹ˆํ™ˆํ”ผ "๋ถˆ์•ˆ ๋ถˆ์•ˆํ•ด"


์‹ธ์ด์›”๋“œ ๋ณด์•ˆ๋ฌธ์ œ ๋‹ค์‹œ ๋ถˆ๊ฑฐ์ง€๋‚˜ ? - http://doyoubest.tistory.com/89

์‚ฌ์šฉ์ž์˜ ๋ถ€์ฃผ์˜๋„ ํฌ์ง€๋งŒ ๊ทผ๋ณธ์ ์œผ๋กœ ๊ตญ๋‚ด์‚ฌ์ดํŠธ๋“ค์˜ ๋ถ€์‹คํ•œ ๋ณด์•ˆ๊ด€๋ฆฌ๊ฐ€ ์ •๋ณด์œ ์ถœ์˜ ์ฃผ ์š”์ธ์œผ๋กœ ๋ถ„์„๋œ๋‹ค.

๋‹ค์Œ์€ ๊ตฌ๊ธ€์—์„œ "์‹ธ์ด์›”๋“œ ํ•ดํ‚น" ์ด๋ผ๋Š” ๊ฒ€์ƒ‰์–ด๋กœ ๋ฆฌํŠธ๋ฆฌ๋ฒŒํ•œ ํ™”๋ฉด์ด๋‹ค.


๋งŒ์•ฝ์— ์•„์ฃผ ์‚ฌ์ ์ธ ์‚ฌ์ง„์„ ๋น„๊ณต๊ฐœ๋กœ ๋‹ด์•„๋‘์—ˆ๋‹ค๊ณ  ์น˜์ž.
๊ณผ์—ฐ ์•ˆ์ „ํ• ๊นŒ?
-์•„๋‚˜์šด์„œ ์‹ธ์ด์›”๋“œ ๋น„๊ณต๊ฐœ ์‚ฌ์ง„ ์œ ์ถœ http://www.chosun.com/site/data/html_dir/2007/04/30/2007043000404.html


๋ง‰์ƒ, ์‹ธ์ด์›”๋“œ์—์„œ ์ง์„ ๊พธ๋ฆฌ๊ณ  ์ด์‚ฌ๋ฅผ ํ•˜์ž๋‹ˆ, ๊ทธ ๋™์•ˆ ์˜ฌ๋ ค๋†“์•˜๋˜ ์‚ฌ์ง„๋“ค์ด ์šธํƒ€๋ฆฌ๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”
์ด์œ ์ค‘์˜ ํฐ ์ด์œ ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค.

Cyro๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ธ๋ฐ, ํด๋ฆญ ํ•œ๋ฐฉ์œผ๋กœ ๊ทธ ๋™์•ˆ ์ €์žฅํ•ด๋‘์—ˆ๋˜ ๋ชจ๋“  ์‚ฌ์ง„์ž๋ฃŒ๋“ค์„ ์‹ ์†ํ•˜๊ณ , ๋ถ„๋ฅ˜๊ฐ€ ์ž˜ ๋œ ์ƒํƒœ๋กœ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.





......์•„์ง๋„ ์‹ธ์ด ํ•˜์‹ญ๋‹ˆ๊นŒ?

๊ณผ๊ฐํžˆ ๋ฒ—์–ด๋‚˜์‹ญ์‹œ์˜ค.

๋ฐ˜์‘ํ˜•

์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
์ง€๊ธˆ๊นŒ ์ง€ ๊ฐœ๋ฐœ๋œ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๊ทธ๋žจ ์ค‘์—์„œ ๊ฐ€์žฅ ๊ฒฐ์ •์ ์ด๋ฉฐ ๋ฐ˜๋ก ์˜ ์—ฌ์ง€๊ฐ€ ์—†๊ณ  ๋ถˆ๋ณ€์˜ ๊ฐ€์น˜๋ฅผ ๊ฐ–๋Š” ์†Œํ”„ํŠธ์›จ์–ด์—๋Š” ๊ณผ์—ฐ ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ์„๊นŒ? ๋‘๋งํ•  ํ•„์š”์—†์ด ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„์›จ์–ด 1์œ„๋Š” ์„ธ๊ณ„์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ผ์นœ ์œ ๋‹‰์Šค BSD 4.3์ด๋‹ค. ๋ฌผ๋ก  ์ƒ์—…์ ์œผ๋กœ ๋” ํฐ ์„ฑ๊ณต์„ ๊ฑฐ๋‘” ๋‹ค๋ฅธ ์œ ๋‹‰์Šค ๋ฒ„์ „๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ BSD ์‹œ์Šคํ…œ์ด ๊ณ„์† ๋ˆ„์ ๋˜์–ด ๋ฐœ์ „๋˜์–ด ์˜จ ๊ณผ์ •์„ ๊ฐ์•ˆํ•ด๋ณผ ๋•Œ, BSD 4.3์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ˜์‹ ์˜ โ€˜๋””๋”ค๋Œโ€™์ด ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 2์œ„์™€ 3์œ„๋Š” IBM์˜ ์‹œ์Šคํ…œ R๊ณผ ๊ฒŒ๋†ˆ์—ฐ๊ตฌ์†Œ์˜ ์œ ์ „์ž ๋ฐฐ์—ด ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ฐจ์ง€ํ–ˆ๋‹ค.

ํ˜ˆ๊ธฐ์™•์„ฑํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์ˆ ์ž๋“ค์€ ๋ฌด์—‡์ด ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์— ์ฆ‰๊ฐ ๋‹ต๋ณ€์„ ๋‚ด๋†“๊ฒ ์ง€๋งŒ ์ง„์ • ํ›Œ๋ฅญํ•œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์‹œ๊ฐ„์„ ๋‘๊ณ  ํ‰๊ฐ€ํ•œ๋‹ค๋ฉด ์„ ํƒํ•˜๊ธฐ๊ฐ€ ๊ทธ๋ฆฌ ์‰ฝ์ง€๋งŒ์€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

ํ•„ ์ž๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ ์ค‘์˜ ํ•˜๋‚˜๋Š” ์ •์‹ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค. 2์ฐจ ์„ธ๊ณ„๋Œ€์ „ ๊ธฐ๊ฐ„์— ๋…์ผ์˜ ํ…”๋ ˆํƒ€์ดํ”„ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜์—ˆ๋˜ ์ฝœ๋กœ์„œ์Šค(Colossus)๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ธฐ ์ „์—๋Š” ์—ฐํ•ฉ๊ตฐ์ด ๋ฉ”์‹œ์ง€๋ฅผ ํ•ด๋…ํ•˜๋Š”๋ฐ 6์‹œ๊ฐ„ ์ด์ƒ ๊ฑธ๋ ธ์œผ๋ฉฐ ๊ทธ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๊ฒฐ๋ก ์— ๋„๋‹ฌํ•œ ๋‹ค์Œ ๊ตฐ๋Œ€์— ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š”๋ฐ ํ•˜๋ฃจ ์ด์ƒ์ด ๊ฑธ๋ ธ์—ˆ๋‹ค. ์ฝœ๋กœ์„œ์Šค๋ฅผ ํ†ตํ•ด, ์—ฐํ•ฉ๊ตฐ์€ ๋…์ผ ๊ตฐ๋Œ€์˜ ์˜๊ตญ ํ•ดํ˜‘์—์„œ์˜ ์›€์ง์ž„์„ ํฌ์ฐฉํ•  ์ˆ˜๊ฐ€ ์žˆ์—ˆ๊ณ  ๋“œ์™€์ดํŠธ ์•„์ด์  ํ•˜์›Œ๋Š” ๋…ธ๋ฅด๋ง๋”” ์ƒ๋ฅ™์ž‘์ „์„ ๊ฐํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ถ(Boolean) ์—ฐ์‚ฐ ์‹คํ–‰์„ ์œ„ํ•ด 1944๋…„์— ๊ฐœ๋ฐœ๋œ ์ฝœ๋กœ์„œ์Šค๋Š” 1์ดˆ์— ์•ฝ 5,000์ž๋ฅผ ์ข…์ด ํ…Œ์ดํ”„๋ฅผ ํ†ตํ•ด ๊ณต๊ธ‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋…ผ๋ฆฌ๋Š” ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๊ธฐ๊ณ„์— ์ ์šฉ๋˜์—ˆ์œผ๋ฉฐ, ์•„๋งˆ๋„ ์ด ์ฝœ๋กœ์„œ์Šค๊ฐ€ ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•„๋‹๊นŒ ์‹ถ๋‹ค.

๋น„์•ฝ์ ์ด๊ณ  ํƒ์›”ํ•ด์•ผํ•˜๋ฉฐ ํ˜„์‹ค ์„ธ๊ณ„์—์„œ ์ฑ„ํƒ๋œ ๊ฒƒ
๊ทธ ๋ ‡๋‹ค๋ฉด, ์–ด๋””์—์„œ๋ถ€ํ„ฐ ์ถœ๋ฐœํ•ด์•ผ ํ• ๊นŒ? ๋จผ์ € ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์œ„๋Œ€ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์ธ์ด ๋ฌด์—‡์ธ์ง€ ๊ธฐ์ค€์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋‹ค. ๋›ฐ์–ด๋‚œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์—ญ์‚ฌ์ ์ธ ์ƒํ™ฉ ๋ฐ ๋ฐฐ๊ฒฝ๊ณผ ๊ด€๋ จํ•ด์„œ๋งŒ ํŒ๋‹จ๋  ์ˆ˜ ์žˆ๋‹ค. ๋น„์•ฝ์ ์ด์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  ๊ธฐ์ˆ ์ ์œผ๋กœ ํƒ์›”ํ•ด์•ผ ํ•˜๋ฉฐ ์ด์ „์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ๊ฒƒ์„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ํ˜„์‹ค ์„ธ๊ณ„์—์„œ ์ฑ„ํƒ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ฝœ๋กœ์„œ์Šค๋Š” ์˜ค๋žซ๋™์•ˆ ์ง€์†๋˜์–ด์˜จ ๊ธฐ๊ณ„์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ „์ž์‹์œผ๋กœ ๋ฐ”๊พธ์–ด๋†“์•˜์œผ๋ฉฐ(์ดˆ๊ธฐ ์ปดํ“จํ„ฐ ํ˜•ํƒœ), ์•”ํ˜ธํ™”๋œ ํ…”๋ ˆํƒ€์ดํ”„์˜ ํ•ด๋…์„ ๊ฐ€์†ํ™”ํ•จ์œผ๋กœ์จ ๋งค์šฐ ๊ท€์ค‘ํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ–ˆ๋‹ค. ์ฝœ๋กœ์„œ์Šค๊ฐ€ ์—ญ์‚ฌ๋ฅผ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค.

์œ„๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋˜ ๋‹ค๋ฅธ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ๋ก€๋Š” IBM์˜ 360 ์‹œ์Šคํ…œ์ด๋‹ค. ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” 1964๋…„์— ์ตœ์ดˆ์˜ ๋ฒ”์šฉ ์ปดํ“จํ„ฐ ์šด์˜์ฒด์ œ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•ด ์‚ฌ์‹ค๋กœ์„œ ๋ฐ›์•„๋“ค์ด๊ณ  ์žˆ๋Š” ๊ฒƒ์˜ ์ƒ๋‹น ๋ถ€๋ถ„ ์ฆ‰, ๊ฐ„๋‹จํ•œ ๋””์ž์ธ์ด ๋ณต์žกํ•œ ๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค๋Š” ๊ฒƒ๊ณผ ์—ฌ๋Ÿฌ ์ง‘๋‹จ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค๋ณด๋‹ค๋Š” ๋ช‡๋ช‡์˜ ์ˆ™๋ จ๋œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์„ฑ์ทจ๋ ฅ์ด ํƒ์›”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์€ ํ”„๋ ˆ๋ฐ๋ฆญ ๋ธŒ๋ฃฉ์Šค์˜ ์ €์„œ์ธ โ€˜The Mythical Man-Monthโ€™์— ์ž˜ ๋‚˜ํƒ€๋‚˜์žˆ๋‹ค. ๋ธŒ๋ฃฉ์Šค๋Š” ๊ฑฐ๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ผ๋“ค์ด ์ž˜๋ชป๋˜๊ณ  ์žˆ๋Š”์ง€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋Š” ์‹ค์ œ๋กœ IBM์ด ์‹คํ–‰ํ•˜๋˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ „๋ถ€ ํ˜นํ‰ํ–ˆ์œผ๋ฉฐ, ์ž ์žฌ์ ์ธ ์‹คํŒจ ์š”์ธ์ด ๋„ˆ๋ฌด๋‚˜ ๋งŽ๋‹ค๊ณ  ๋น„๋‚œํ–ˆ๋‹ค. ์ด๊ฒƒ์ด IBM์ด ๊ทธ๋ฅผ ์ฑ…์ž„์ž๋กœ ์ง€๋ชฉํ•œ ์ด์œ ๊ฐ€ ์•„๋‹๊นŒ ์ƒ๊ฐํ•œ๋‹ค.
IBM์˜ ํŒ๋‹จ์€ ํ˜„๋ช…ํ–ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ, ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋™์‹œ์— ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์ดˆ์˜ ์ปดํ“จํ„ฐ๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ์œผ๋‹ˆ ๋ง์ด๋‹ค. ์ด๋Š” IBM์˜ ๋ฉ”์ธํ”„๋ ˆ์ž„์˜ ๋ชจํƒœ๊ฐ€ ๋˜์—ˆ์œผ๋ฉฐ, 370 ์‹œ๋ฆฌ์ฆˆ์™€ z์‹œ๋ฆฌ์ฆˆ๋กœ ์ง„ํ™”ํ•˜๋Š”๋ฐ ์‹œ์ดˆ๊ฐ€ ๋˜์—ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋„ ๊ทธ๋Ÿฌํ•œ ์‹œ์Šคํ…œ์€ ์—ฌ์ „ํžˆ ๋ธŒ๋ฃฉ์Šค์˜ 360 ์šด์˜์ฒด์ œ์™€ ํ˜ธํ™˜๋˜๊ณ  ์žˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์ด ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์ง€๋ชฉ ๋ฐ›๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์œ ๋Š” โ€˜๋‹ค๋ฆฌโ€™๋ฅผ ๊ฐ€์กŒ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‰ฝ๊ฒŒ ํ๊ธฐ์ฒ˜๋ถ„ ๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค.

IBM ๋ฉ”์ธํ”„๋ ˆ์ž„์˜ ๋ชจํƒœ๊ฐ€ ๋œ IBM 360
IBM 360์ด ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์ค‘์˜ ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์— ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๋™์˜ํ•˜๊ณ  ์žˆ๋‹ค. ์œ„๋Œ€ํ•œ ๊ฒƒ์€ ์˜ค๋žœ ์—ญ์‚ฌ์ ์ธ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ํ‰๊ฐ€ํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ๋กœ ๋‹ค๊ฐ€์˜ฌ์ˆ˜๋ก ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ง€๋ชฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค.
ํ•˜์ง€๋งŒ ์ฝœ๋กœ์„œ์Šค๋ถ€ํ„ฐ ํ˜„์žฌ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๊ฐœ๋ฐœ๋œ ์†Œํ”„ํŠธ์›จ์–ด ์ค‘ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ๊ฒƒ๋“ค์„ ๊ผฝ์•„๋ณด๊ธฐ๋กœ ํ•˜์ž. ํ•„์ž๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ „๋ฌธ๊ฐ€์ธ ์ œ์ž„์Šค ๋Ÿผ๋ฒ„๋ฅผ ๋น„๋กฏํ•ด, ๋ฏธ๊ตญ ์ปดํ“จํ„ฐํ•™ํšŒ(ACM)์˜ ์ŠคํŠœ์–ดํŠธ ํŽ ๋“œ๋จผ ์˜์žฅ, ๋ฒค์ฒ˜ ์บํ”ผํ„ธ๋ฆฌ์ŠคํŠธ์ธ ์•ค ์œˆ๋ธ”๋ผ๋“œ์™€ ๊ฒŒ๋ฆฌ ๋ชจ๊ฒ์Šฌ๋Ÿฌ, ์›น ์‚ฌ์ดํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์†Œํ”„ํŠธ์›จ์–ด(PHP 3.0) ์ €์ž์ธ ์ง€๋ธŒ ์ˆ˜๋ผ์Šคํ‚ค์™€ ์•ค๋”” ๊ตฟ๋งจ์ฆˆ, ๊ทธ๋ฆฌ๊ณ  ๋‚ด ๋™์ƒ ์›”๋ฆฌ์˜ ์กฐ์–ธ์„ ๋ฐ›์•˜๋‹ค. ํ•˜์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชฉ๋ก์€ ํ•„์ž๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค.
ํ•„์ž๋Š” MIT ์—ฐ๊ตฌ์ง„์— ์˜ํ•ด ๊ฐœ๋ฐœ๋œ ์•„ํด๋กœ ์šฐ์ฃผ์„ ์˜ ์œ ๋„ ์‹œ์Šคํ…œ์— ์–ธ์ œ๋‚˜ ๋†€๋ผ์›€์„ ๊ธˆ์น˜ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค. 1969๋…„์—, ์ด ์‹œ์Šคํ…œ์€ ์•„ํด๋กœ 11ํ˜ธ๋ฅผ ๋‹ฌ์— ๋ณด๋ƒˆ์œผ๋ฉฐ, ๋‹ฌ ์ฐฉ๋ฅ™์„ ์„ ๋ถ„๋ฆฌ์‹œํ‚จ ๋‹ค์Œ ๋‹ฌ ํ‘œ๋ฉด์— ์ฐฉ๋ฅ™์‹œ์ผฐ์œผ๋ฉฐ, ์„ธ ๋ช…์˜ ์šฐ์ฃผ๋น„ํ–‰์‚ฌ๋“ค์„ ์ง€๊ตฌ๋กœ ๊ท€ํ™˜์‹œ์ผฐ๋‹ค. ๊ทธ๊ฒƒ๋„ ๋ ˆ์ด์‹œ์˜จ(Raytheon) ์ปดํ“จํ„ฐ์— ํƒ‘์žฌ๋œ ์•„์ฃผ ๊ทน์†Œ๋Ÿ‰์˜ ๋ฉ”๋ชจ๋ฆฌ(8Kb๋ฅผ ์‹คํ–‰)๋งŒ์„ ๊ฐ€์ง€๊ณ  ๊ธฐ๋Šฅ์„ ๋ฐœํœ˜ํ•œ ๊ฒƒ์ด๋‹ค. ๋‹น์‹œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ๋Š” ํ˜„์žฌ ํ”„๋ฆฐํ„ฐ ๋“œ๋ผ์ด๋ฒ„ ์‹คํ–‰๋„ ์–ด๋ ต๋‹ค. ๋˜ํ•œ ์™•๋ณต์„ ์„ ๋‹ค์‹œ ์ง„์ž…์‹œํ‚ฌ ๋•Œ ์‹œ์Šคํ…œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์˜ ๊ฒฝ์šฐ ์žฌ๋ถ€ํŒ…ํ•˜๊ธฐ์—๋„ ์‹œ๊ฐ„์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜๋‹ค. ๋‹น์‹œ์—๋Š” ๋ฌผ๋ก  ์œˆ๋„์šฐ๋„ ์ด์šฉํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค.

์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์˜ ์ง„๊ฐ€๋ฅผ ๋ฐœํœ˜ํ•œ ๊ฒƒ์€ MS ์—‘์…€
์•„ ํด๋กœ ์œ ๋„ ์‹œ์Šคํ…œ์€ ์•„๋งˆ๋„ ๊ธฐ์ˆ  ์ „๋ฌธ๊ฐ€๋“ค์—๊ฒŒ๋Š” โ€˜์ง€๋ฃจํ•œโ€™ ์†Œํ”„ํŠธ์›จ์–ด์ฒ˜๋Ÿผ ๋ณด์ผ ๊ฒƒ์ด๋‹ค. ํ›จ์”ฌ ๋” ๋ณต์žกํ•œ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์‹œ์Šคํ…œ์ด ํ˜„์žฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋‹ˆ ๋ง์ด๋‹ค. ์ด ์‹œ์Šคํ…œ์€ ์ž˜ ์•Œ๋ ค์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ† ๋Œ€๋กœ ํ•˜๊ณ  ์žˆ์ง€๋งŒ ํ•„์ž์—๊ฒŒ๋Š” ์—ฌ์ „ํžˆ ๋กœ์ผ“ ๊ณผํ•™๊ณผ๋„ ๊ฐ™๋‹ค. ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ž˜๋ชป๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ๋“ค์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ธ๋„ํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ฐํƒ„์‚ฌ๊ฐ€ ์ ˆ๋กœ ๋‚˜์˜ค๊ฒŒ ํ•œ๋‹ค.
์•„ํด๋กœ ์šฐ์ฃผ์™•๋ณต์„  ์‹œ์Šคํ…œ์ด ๋น„๊ต์  ๋‹จ์ˆœํ•ด์„œ ๋™์˜ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ๋‹ค๋ฉด ๊ทธ๋“ค์€ ํ›จ์”ฌ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์ด์–ด์•ผ๋งŒ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ธ์ง€ ๊ถ๊ธˆํ•˜๋‹ค. ํ•œ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž. BAE Automated Systems ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฒฝ์šฐ ๋ด๋ฒ„ ๊ตญ์ œ ๊ณตํ•ญ์—์„œ ํ™”๋ฌผ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ 1993๋…„ 10์›” ์ฒซ ์„œ๋น„์Šค ๊ฐœ์‹œ์ผ์— ๋งŽ์€ ํ™”๋ฌผ๋“ค์„ ๋ถ„์‹คํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๋ณด๋ƒˆ์œผ๋ฉฐ, ์ผ๋ถ€๋Š” ์ปจ๋ฒ ์ด์–ด๋กœ ๋ณด๋‚ด์กŒ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋ด๋ฒ„์‹œ๋Š” ๊ณตํ•ญ ๊ฐœ์žฅ์„ 16๊ฐœ์›”์ด๋‚˜ ๋Šฆ์ถฐ์•ผ๋งŒ ํ–ˆ๋‹ค. ๊ณตํ•ญ ๊ฐœ์žฅ์˜ ์ง€์—ฐ์œผ๋กœ ์ธํ•ด ๋ด๋ฒ„์‹œ๊ฐ€ ์ž…์€ ํ”ผํ•ด ๊ธˆ์•ก์€ ํ•˜๋ฃจ์— 110๋งŒ ๋‹ฌ๋Ÿฌ์— ๋‹ฌํ–ˆ๋‹ค.
์ด์ฒ˜๋Ÿผ ๋ณต์žกํ•œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์‹คํŒจ ์‚ฌ๋ก€๋Š” ์–ผ๋งˆ๋“ ์ง€ ์žˆ๋‹ค. ์ด๋ฏธ ์šฐ๋ฆฌ์˜ ์‚ถ์ด ๊ทธ๋Ÿฌํ•œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์‹คํŒจ๋กœ ์ ์ฒ ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ˆ๋‹ค. ๋ฏธ๊ตญ ์—ฐ๋ฐฉํ•ญ๊ณต๊ตญ(FAA)์€ ํšจ๊ณผ์ ์ธ ํ•ญ๊ณต ๊ตํ†ต ๊ด€์ œ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ์œ„ํ•ด ์ˆ˜์‹ญ์–ต ๋‹ฌ๋Ÿฌ๋ฅผ ํ•œ๋ฒˆ๋„ ์•„๋‹Œ ์„ธ ๋ฒˆ์ด๋‚˜ ํˆฌ์žํ–ˆ๋‹ค. ์ด๋ฏธ ๊ตฌ์ถ•ํ•ด๋†“์€ ๊ฒƒ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์„ ๋’ค์—Ž์—ˆ๋Š”๋ฐ, ๊ธˆ์•ก์œผ๋กœ ํ™˜์‚ฐํ•˜๋ฉด 1์–ต4,400๋งŒ ๋‹ฌ๋Ÿฌ์— ํ•ด๋‹น๋˜๋ฉฐ, ์—ฌ์ „ํžˆ ์ด๋”ฐ๊ธˆ์”ฉ ์ •์ง€๋˜๊ฑฐ๋‚˜ ๊ณ ์žฅ์„ ์ผ์œผํ‚ค๊ณ  ์žˆ๋‹ค. ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด? ํ•„์ž๋Š” ์•„ํด๋กœ ์œ ๋„ ์‹œ์Šคํ…œ์„ ๊ณ ์ง‘ํ•˜๊ฒ ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์„ฑ๊ณต์ž‘์œผ๋กœ ํ‰๊ฐ€๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐœ๋ฐœ ๋ชฉ์ ์„ ์ถฉ์‹คํžˆ ์ดํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์ž๋ช…ํ•œ ์ด์น˜๋Š” ์ตœ์ดˆ์˜ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์†Œํ”„ํŠธ์›จ์–ด์ธ ๋น„์ง€์นผํฌ(VisiCalc)์—๋„ ์ ์šฉ๋œ๋‹ค. ๋น„์ง€์นผํฌ๋Š” ๊ฐœ์ธ์šฉ ์ปดํ“จํŒ…์˜ ํŒŒ์›Œ๋ฅผ ์ž…์ฆํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„๋Œ€ํ•˜๋‹ค๋Š” ํ‰๊ฐ€๋ฅผ ๋ฐ›์„๋งŒํ•˜๋‹ค. ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๊ธฐ์—…๋“ค์—๊ฒŒ ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์ œ๊ณตํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋น„์ง€์นผํฌ๋Š” ๊ทธ ๋น„์•ฝ์ ์ธ ๊ฐœ๋…์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ทธ ์ž์ฒด๋กœ์„œ๋Š” ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค. ์˜ค๋ฅ˜ํˆฌ์„ฑ์ด์—๋‹ค ํˆฌ๋ฐ•ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋งŽ์€ ์ผ๋“ค์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์˜ ์ง„๊ฐ€๋ฅผ ๋ฐœํœ˜ํ•œ ๊ฒƒ์€ ๋น„์ง€์นผํฌ๋„, ๋กœํ„ฐ์Šค 1-2-3๋„ ์•„๋‹Œ ๋งˆ์ดํฌ์†Œํ”„ํŠธ ์—‘์…€์ด๋‹ค. ์—‘์…€์€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์˜ ํŒŒ์›Œ๋ฅผ ํ™•์žฅํ–ˆ์œผ๋ฉฐ ๊ธฐ์—…์—๊ฒŒ ๋ฐฉ๋Œ€ํ•œ ๊ณ„์‚ฐ ํˆด์„ ์ œ๊ณตํ•ด์ฃผ์—ˆ๋‹ค. ์—‘์…€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋Š” ํ˜„์žฌ๊นŒ์ง€ ํ™•์žฅํŒ์œผ๋กœ ๊ณ„์† ๋“ฑ์žฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

AI์†Œํ”„ํŠธ์›จ์–ด๋Š” ์œ„๋Œ€ํ•œ ๊ฒƒ๊ณผ๋Š” ๊ฑฐ๋ฆฌ์žˆ์–ด
์ธ ๊ณต์ง€๋Šฅ(AI) ๋ถ„์•ผ์—๋Š” ๋‹น์—ฐํžˆ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋“ค์ด ๋Œ€๊ฑฐ ํฌ์ง„ํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์„ ๊ฒƒ์ด๋‹ค. ํ•œ๋•Œ AI๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์„ ๊ฐ€๋ฅด์ณ์ฃผ๋ฉฐ ์ด์„ฑ๋„ ์žˆ๊ณ  ๋์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”, ์ธ๊ฐ„๊ณผ ์œ ์‚ฌํ•œ ์ง€๋Šฅ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ์ชฝ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ํ˜„์žฌ AI์˜ ๊ฒฐ๊ณผ๋Š” ์–ด๋–ค๊ฐ€? ๊ธฐ๊ต๋Š” ์ž”๋œฉ ๋ถ€๋ ธ์ง€๋งŒ ์ง€๋Šฅ์€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค.
AI ์—ฐ๊ตฌ์—์„œ ํŒŒ์ƒ๋œ ์‹ ๊ฒฝ๋ง(Neural nets)์€ ์ „์„ธ๊ณ„์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ์ž๋™ ์ง€๋ฌธ ์ธ์‹ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์–ด๋ƒˆ๋‹ค. ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ํŒจํ„ด ๋น„๊ต๋ผ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ง€๋Šฅ์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•  ์ˆ˜๋Š” ์—†๋‹ค.
์ง€ ๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœ๋œ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ค‘์—์„œ ์ตœ์ดˆ์˜ ์ง„์ •ํ•œ ๋น„์•ฝ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ถ”๋ก ์—”์ง„(inference engine)์ด๋‹ค. ์ถ”๋ก ์—”์ง„์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ์‚ฌ์‹ค์ด๋‚˜ ๊ฐ€์„ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ์‚ฌ์‹ค์ด๋‚˜ ๊ฐ€์„ค์„ ๋„์ถœํ•˜๊ฑฐ๋‚˜ ์›์ธ์˜ ์ง„๋‹จ์„ ๋‚ด๋ ค์ฃผ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ปดํ“จํ„ฐ๋Š” ์ƒํ™ฉ์„ ๋น„๊ตํ•ด ํŒ๋‹จ์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ™˜์ž์˜ ์ฒด์˜จ์ด 38๋„์— ์œก๋ฐ•ํ•  ๊ฒฝ์šฐ, ์ž…๋ ฅ๋œ ๊ทœ์น™์— ๋”ฐ๋ผ ์„ธ๊ท ์— ์˜ํ•œ ๊ฐ์—ผ์ด ์›์ธ์ด๋ผ๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ๋งˆ์ด์‹ (Mycin) ์˜๋ฃŒ ์ง„๋‹จ ์‹œ์Šคํ…œ์€ ์ง•ํ›„์— ๋”ฐ๋ผ ํ™˜์ž์˜ ์„ธ๊ท  ๊ฐ์—ผ์„ ์ •ํ™•ํžˆ ํŒ๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋น„์ „๋ฌธ์˜๋“ค๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ์‚ฌ๋ก€๋Š” ์—†๋‹ค. ๊ธฐ๊ณ„์˜ ์˜ค์ž‘๋™์ด๋‚˜ ์˜ค์ง„์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋ฒ•์ ์ธ ์†Œ์†ก์— ํœ˜๋ง๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
ํ•„์ž๊ฐ€ ์ข‹์•„ํ•˜๋Š” AI ํŒจํ‚ค์ง€๋Š” IBM์˜ ๋”ฅ๋ธ”๋ฃจ(Deep Blue) ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ, ์ฒด์Šค ์„ธ๊ณ„ ์ฑ”ํ”ผ์–ธ ๊ฐœ๋ฆฌ ์นด์ŠคํŒŒ๋กœํ”„์™€์˜ ๋Œ€๊ตญ์„ ์Šน๋ฆฌ๋กœ ์ด๋ˆ ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. ์นด์ŠคํŒŒ๋กœํ”„๋Š” ๋”ฅ๋ธ”๋ฃจ๊ฐ€ ๋’ค์—์„œ ์‚ฌ๋žŒ๋“ค์˜ ๋„์›€์„ ๋ฐ›์•˜๋‹ค๊ณ  ๋ถˆํ‰ํ–ˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์€ ์‚ฌ์‹ค์ด์—ˆ๋‹ค. IBM ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์€ ๊ฒŒ์ž„ ์‚ฌ์ด์‚ฌ์ด์— ๋”ฅ๋ธ”๋ฃจ๋ฅผ ์ˆ˜์ •ํ•ด ์นด์ŠคํŒŒ๋กœํ”„์˜ ๊ฒŒ์ž„ ์Šคํƒ€์ผ์— ์ ์‘ํ•˜๋„๋ก ๋ฐ”๊พธ์—ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํ•„์ž๋Š” ๋”ฅ๋ธ”๋ฃจ๋ฅผ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ›„๋ณด์—์„œ ์ œ์™ธ์‹œ์ผฐ๋‹ค. IBM ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์˜ ํ–‰์œ„๋Š” ๊ทœ์น™์— ์œ„๋ฐ˜๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ๋ง์•˜์–ด์•ผ ํ–ˆ๋‹ค. ๋”ฅ๋ธ”๋ฃจ์™€๋Š” ๋‹ฌ๋ฆฌ ์นด์ŠคํŒŒ๋กœํ”„๋Š” ์ž๊ธฐ์˜ ๋‘๋‡ŒํšŒ๋กœ๋ฅผ โ€˜์ˆ˜์ •โ€™ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์ •ํ•˜์ง€ ๋ชปํ•œ ๊ฒŒ์ž„์ด์—ˆ๋‹ค.
AI ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋งค์šฐ ์ธ์ƒ์ ์ด์ง€๋งŒ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ๊ฒƒ๊ณผ๋Š” ๋‹ค์†Œ ๊ฑฐ๋ฆฌ๊ฐ€ ์žˆ๋‹ค.

์›น์€ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ชฉ๋ก์—์„œ ์ œ์™ธ
ํ•„ ์ž์—๊ฒŒ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฒ™์–ด๋ฆฌ์™€ ๊ฐ™์€ โ€˜์žฅ์• ๋ฅผ ๊ฐ€์ง„โ€™ ๋‹จ๋ง์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ์—ฐ๊ตฌ์†Œ ์‚ฌ์„œ์ธ ๋™์ƒ ์›”๋ฆฌ๋Š” ๋ชจ์ž์ดํฌ(Mosaic)๊ฐ€ ์ตœ์ดˆ์˜ ๊ทธ๋ž˜ํ”ฝ ๋ธŒ๋ผ์šฐ์ €๋กœ, ์›น์„ ๊ธฐ์ˆ  ๋ถ„์•ผ์—์„œ ์ธ๊ฐ„์˜ ์‹ค์ƒํ™œ๋กœ ์˜ฎ๊ฒจ๋†“์€ ๊ฒƒ์— ํฐ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๋Š” ๋ฐ์— ๋†’์€ ์ ์ˆ˜๋ฅผ ์ฃผ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•„์ž๋ฅผ ๋‚ฉ๋“์‹œ์ผฐ๋‹ค. ๋ชจ์ž์ดํฌ์˜ โ€˜์กฐ์ƒโ€™์ธ ๊ณ ํผ(Gopher)์˜ ๊ฒฝ์šฐ๋Š” ์•„์Šฌ์•„์Šฌํ•˜๊ฒŒ ํ›„๋ณด์—์„œ ์ œ์™ธ๋˜์—ˆ์œผ๋ฉฐ, ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์›น ํŽ˜์ด์ง€์˜ ์•ž ๋’ค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ ์ตœ์ดˆ์˜ ๋ธŒ๋ผ์šฐ์ €์ธ ViolaWWW ์—ญ์‹œ ๊ฐ„๋ฐœ์˜ ์ฐจ์ด๋กœ ์ œ์™ธ๋˜์—ˆ๋‹ค.
๋ชจ์ž์ดํฌ๋Š” ์ฃผ์†Œ์ฐฝ๊ณผ ๋งˆ์šฐ์Šค ๊ธฐ๋ฐ˜์˜ ํฌ์ธํŠธ ๋ฐ ํด๋ฆญ, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํŒŒ์ผ ๋””์Šคํ”Œ๋ ˆ์ด, ํ•˜์ดํผ๋งํฌ ๋“ฑ์„ ์ฐฝ์œผ๋กœ ๊ฒฐํ•ฉํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธํ„ฐ๋„ท์˜ ์ •๋ณด ์„œ๋ฒ„์™€ ์™„๋ฒฝํ•˜๊ฒŒ ์—ฐ๊ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์—ˆ๋‹ค. ๋ชจ์ž์ดํฌ๋Š” ์ƒ๋‹จ์˜ ํˆด ๋ฐ”๋ฅผ ๋น„๋กฏํ•ด ํ’€ ๋‹ค์šด ๋ฉ”๋‰ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ๋„ท์Šค์ผ€์ดํ”„ ๋„ค๋น„๊ฒŒ์ดํ„ฐ์™€ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ, ํŒŒ์ด์–ดํญ์Šค ๋“ฑ์˜ โ€˜๋ชจํƒœโ€™๊ฐ€ ๋˜์—ˆ๋‹ค(์ต์Šคํ”Œ๋กœ๋Ÿฌ์˜ ์ฐฝ์—์„œ ์ƒ๋‹จ ๋ฉ”๋‰ด ๋ฐ”์— ์žˆ๋Š” ๋„์›€๋ง(H)์„ ํด๋ฆญํ•ด๋ณด๋ผ. ๊ทธ๋Ÿฐ ๋‹ค์Œ์— ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ ์ •๋ณด(A)๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋ชจ์ž์ดํฌ๋ฅผ ํ† ๋Œ€๋กœ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค). ๊ธฐ์ˆ ์ ์ธ ํƒ์›”ํ•จ์€ ๋ถ€์กฑํ• ์ง€ ๋ชฐ๋ผ๋„ ์ƒˆ๋กœ์šด ์žฅ์„ ์—ด์–ด์ฃผ์—ˆ๋‹ค๋Š” ์ ์—์„œ ๋†’์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›์„๋งŒํ•˜๋‹ค.
์›”๋“œ์™€์ด๋“œ์›น(WWW) ์ž์ฒด์—๋„ ๋˜‘๊ฐ™์ด ๋งํ•  ์ˆ˜ ์žˆ์„๊นŒ? ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ ์ฐฝ์‹œํ•œ WWW์€ ํ•˜์ดํผํ…์ŠคํŠธ ์—ฐ๊ฒฐ, ๋ณดํŽธ์ ์ธ ๋ฆฌ์†Œ์Šค ๋กœ์ผ€์ดํ„ฐ, HTML ํŽ˜์ด์ง€ ๋””์Šคํ”Œ๋ ˆ์ด ๋“ฑ์„ ๊ฐœ๋ฐœํ•ด ์ „์„ธ๊ณ„์— ๋งค์šฐ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์ณค๋‹ค. ํ•˜์ง€๋งŒ WWW์€ TCP/IP ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ๊ณผ BIND(Berkeley Internet Domain) ๋„๋ฉ”์ธ ๋„ค์ž„ ์„œ๋ฒ„(DNS)์— ์˜์กดํ•˜๋Š” ๊ธฐ์กด์˜ ์•„์ด๋””์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์ฐจ์šฉํ•œ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์›น์€ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ชฉ๋ก์—์„œ ์ œ์™ธ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€์ค‘ํ™”์˜ ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ–ˆ๋‹ค๋Š” ์ ์€ ๋ถ€์ธํ•  ์ˆ˜๊ฐ€ ์—†๋Š” ์‚ฌ์‹ค์ด๋‹ค.

๊ตฌ๊ธ€, ๊ฒ€์ƒ‰์—”์ง„ ๋ถ„์•ผ์—์„œ ๋‹จ์—ฐ 1์œ„
์กฐ ๊ธˆ ๋” ํ˜„๋Œ€๋กœ ์˜ค๋ฉด, ๊ตฌ๊ธ€์ด ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ•œ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ๊ตฌ๊ธ€๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋œ ๋ผ์ด์ฝ”์Šค๋ฅผ ๋น„๋กฏํ•ด ๋””์ง€ํ„ธ ์ดํ…๋จผํŠธ(Digital Equipment)์˜ ์•Œํƒ€๋น„์Šคํƒ€๋‚˜ ๋‹ค๋ฅธ ๊ฒ€์ƒ‰ ์—”์ง„๋“ค๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ตฌ๊ธ€์€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ํŽ˜์ด์ง€ ์ˆœ์œ„๋ฅผ ๋งค๊ธฐ๋Š” ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•ด ๊ฒ€์ƒ‰ ์—”์ง„์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ˆ˜๋งŽ์€ ํŽ˜์ด์ง€๋ฅผ ํ™œ์šฉ ๋นˆ๋„์— ๋”ฐ๋ผ ๊ณ„์ธต์ ์ธ ๋ถ„๋ฅ˜๋ฅผ ์ œ๊ณตํ–ˆ๋‹ค. ๋ชจ๊ฒํ…”๋Ÿฌ ๋ฒค์ฒ˜์Šค(Morgenthaler Ventures)์˜ ๋ชจ๊ฒํ…”๋Ÿฌ๋Š” โ€œ๋…ผ๋ฌธ์˜ ๊ฐ€์น˜๋Š” ๊ทธ ๋…ผ๋ฌธ์ด ๋‹ค๋ฅธ ๋…ผ๋ฌธ๊ณผ ๊ฐ์ฃผ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์–ธ๊ธ‰๋˜์—ˆ๋Š”๊ฐ€์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค. ๊ตฌ๊ธ€์€ ์ด๋ฅผ ์›น์— ์ ์šฉ์‹œ์ผฐ๋‹คโ€๊ณ  ๋งํ–ˆ๋‹ค. ๊ตฌ๊ธ€์€ ๋˜ํ•œ ๊ท€์ค‘ํ•œ ์ •๋ณด ๊ตฌ์กฐ์˜ ํˆด์„ ์ˆ˜๋งŽ์€ ์‚ฌ์šฉ์ž๋“ค๋กœ ์ด๋™์‹œ์ผฐ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์„ ์ •๋˜์—ˆ๋‹ค.
ํ•„์ž๋Š” ์ฌ์˜ ์ž๋ฐ” ์–ธ์–ด๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋˜ ์ „ํ†ต์ ์ธ C ์–ธ์–ด์˜ ํŒŒ์ƒ ์–ธ์–ด ์ •๋„๋กœ๋งŒ ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณธ ๊ฒฐ๊ณผ ๋‚ด ์ƒ๊ฐ์ด ํ‹€๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ž๋ฐ”๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฐ€์ƒ๋จธ์‹ (VM)์„ ๊ตฌํ˜„ํ•ด ์ฝ”๋“œ๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•˜๊ณ  PC๊ฐ€ ๋จธ์‹  ์ž์ฒด์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๋”๋ผ๋„ ๋ชฉ์ ์ง€์ธ PC์—์„œ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ž๋ฐ”๋Š” ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ๋œ ์†Œ์Šค ์ฝ”๋“œ์˜ ํ˜•ํƒœ์ธ ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์˜ ์‚ฌ์šฉ์„ ์ •๋ฆฝํ•ด ํด๋ผ์ด์–ธํŠธ์— ๋„์ฐฉํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋จธ์‹  ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํœด๋Œ€๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง€๊ณ  ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”๋Š” ์™ธ๋ถ€์—์„œ ๋ฐ›์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณดํ˜ธ ์˜์—ญ์ธ ์ƒŒ๋“œ๋ฐ•์Šค์— ๊ฐ€๋‘” ๋’ค ์ž‘๋™์‹œ์ผœ ํ”„๋กœ๊ทธ๋žจ์˜ ํญ์ฃผ๋‚˜ ๋ฐ”์ด๋Ÿฌ์Šค์˜ ์นจํˆฌ๋กœ๋ถ€ํ„ฐ ๋ฐฉ์–ดํ•œ๋‹ค.
์ด๋Ÿฌํ•œ ๋„คํŠธ์›Œํฌ ์ง€ํ–ฅ์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด, ์ž๋ฐ”๋Š” ์ดˆ๊ธฐ ์ธํ„ฐ๋„ท ์‹œ๋Œ€์— ๊ธฐ์—…์—์„œ ์ ๊ทน ๋„์ž…๋  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ๋ฒ„์ถ”์–ผ ์ŠคํŠœ๋””์˜ค ๋‹ท๋„ท์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์ž๋ฐ”๋ฅผ ์ƒ๋‹น์ˆ˜ ์ฑ„์šฉํ–ˆ๋‹ค. ์ž๋ฐ”๋Š” ์ง€์†์ ์œผ๋กœ ํ™•์žฅ๋˜์–ด ์™”์œผ๋ฉฐ, ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ผฝํžˆ๋Š”๋ฐ ์†์ƒ‰์ด ์—†์„ ๊ฒƒ์ด๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ ์šฉํ•œ ๋งฅ OS
DTP(desktop publishing)์™€ ๊ฐ™์ด ๋ณด๋‹ค ์‚ฌ์šฉ์ž์— ์ดˆ์ ์„ ๋งž์ถ˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์–ด๋–จ๊นŒ? DTP๋Š” ์ปดํ“จํ„ฐ๋‚˜ ๋ ˆ์ด์ € ํ”„๋ฆฐํ„ฐ ๋‚ด๋ถ€์—์„œ ๋””์ง€ํ„ธ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์–ด๋„๋น„ ์‹œ์Šคํ…œ์ฆˆ์˜ ํฌ์ŠคํŠธ์Šคํฌ๋ฆฝํŠธ(PostScript)์— ์˜ํ•ด ๊ตฌํ˜„๋˜์—ˆ๋‹ค. ์–ด๋„๋น„๋Š” ํŒ”๋กœ์•Œํ† ์— ์œ„์น˜ํ•œ ์ œ๋ก์Šค์˜ ์—ฐ๊ตฌ ์„ผํ„ฐ(PARC)์—์„œ ๊ฐœ๋ฐœ๋œ ์ „๋ฌธ๊ฐ€์šฉ ์‹์ž(typesetting) ์‹œ์Šคํ…œ์„ ๋‹จ์ˆœํ™”ํ•ด ํฌ์ŠคํŠธ์Šคํฌ๋ฆฝํŠธ์—์„œ ์›ํ™œํ•˜๊ฒŒ ๊ตฌ๋™ํ•˜๋„๋ก ๊ฐœ๋ฐœํ–ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด DTP๊ฐ€ ๋ณดํŽธํ™”๋  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ›Œ๋ฅญํ•œ ์—…์ ์„ ์ด๋ฃจ๊ธด ํ–ˆ์ง€๋งŒ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ผ ๋ถ€๋ฅด๊ธฐ์—” ๋‹ค์†Œ ๋ฏธํกํ•˜๋‹ค.
์ œ ๋ก์Šค์˜ ์—ฐ๊ตฌ์„ผํ„ฐ์— ๋Œ€ํ•ด ์ข€๋” ์•Œ์•„๋ณด์ž. ์• ํ”Œ์˜ ๋งคํ‚จํ† ์‹œ๋Š” ์ œ๋ก์Šค์˜ PARC์—์„œ ๊ฐœ๋ฐœ๋œ ์•Œํ†  ์‹œ์Šคํ…œ์„ ํ† ๋Œ€๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ์•Œํ† ๋Š” ์ตœ์ดˆ์˜ ์ฐฝ์œผ๋กœ ๋œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ตœ์ดˆ์˜ ๋งˆ์šฐ์Šค, ์ตœ์ดˆ์˜ ํ†ตํ•ฉ๋œ ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํƒ‘์žฌ๋˜์–ด ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ์žฅ์— ์ถœ์‹œ๋˜์ง€๋Š” ์•Š์•˜๋‹ค. ์ดํ›„ ์• ํ”Œ์ด ๋‹ค์‹œ ์„ค๊ณ„ํ•œ ๊ฒƒ์ด ์‹œ์žฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์ณค๋‹ค. ํ•„์ž๋Š” ๋‰ด์š•์˜ ์ปดํ“จํ„ฐ ์ƒ์ ์—์„œ ๋งคํ‚จํ† ์‹œ๋ฅผ ์ฒ˜์Œ ๋ณด์•˜์„ ๋•Œ์˜ ๋Š๋‚Œ์„ ๊ฒฐ์ฝ” ์žŠ์„ ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. โ€˜๋กœ์ผ“ ๊ณผํ•™โ€™๊ณผ ๊ฐ™์€ ๋Š๋‚Œ์„ ๋ฐ›์•˜์œผ๋ฉฐ, ๊ทธ๋Ÿฌํ•œ ์„ฑ๋Šฅ์€ ๊ณผ๊ฑฐ์— ํ•œ๋ฒˆ๋„ ๋ณธ ์ ์ด ์—†์—ˆ์œผ๋ฉฐ ๋ฏฟ์„ ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๋งฅ์€ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ์ปดํ“จํŒ… ๋Šฅ๋ ฅ์„ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ์ ์šฉ์‹œ์ผฐ์œผ๋ฉฐ ๋ชจ๋“  ์ด๋“ค์„ ๋งค๋ฃŒ์‹œ์ผฐ๋‹ค. ์ตœ์ดˆ์˜ ๋งฅ ์šด์˜์ฒด์ œ๋ฅผ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์„ ์ •ํ•  ์ˆ˜๋ฐ–์— ์—†๋Š” ์ด์œ ์ด๋‹ค.

๋ชจ๋ฆฌ์Šค ์›œ๋„ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด
๊ธฐ ์ˆ ์€ ์ผ์ƒ ์ƒํ™œ์— ์Šค๋ฉฐ๋“ค์–ด ๋งŽ์€ ๊ฒƒ๋“ค์„ ๋ฐ”๊พธ์–ด๋†“๊ณ  ์žˆ๋‹ค. ๋‹ค์Œ ํ›„๋ณด๋Š” ์‹ซ์–ดํ•˜๊ณ  ์งœ์ฆ์Šค๋Ÿฌ์šด ์†Œํ”„ํŠธ์›จ์–ด์ด์ง€๋งŒ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์„ ์ •ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค. 1988๋…„์— ๋ชจ๋ฆฌ์Šค(Morris) ์›œ์€ ์ธํ„ฐ๋„ท์— ์นจํˆฌํ•ด ๋Œ€ํ•™ ์„œ๋ฒ„๋ฅผ ๊ฐ์—ผ์‹œํ‚ค๊ณ  ์—…๋ฌด๋ฅผ ์ค‘๋‹จ์‹œ์ผฐ๋‹ค. ์›œ ์ œ์ž‘์ž์ธ ์ฝ”๋„ฌ(Cornell) ๋Œ€ํ•™์ƒ์ธ ๋กœ๋ฒ„ํŠธ ๋ชจ๋ฆฌ์Šค๋Š” ์ž์‹ ์ด ๊ทธ ์›œ์„ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐ๋„ท์ด ์–ผ๋งˆ๋‚˜ ํฐ์ง€๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์•˜๋ƒ๊ณ  ๋ฐ˜๋ฌธํ•œ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งž๋Š” ์–˜๊ธฐ์ด๊ธด ํ•˜๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ์†Œํ”„ํŠธ์›จ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ชจ๋ฆฌ์Šค ์›œ์€ ์ด๋ก ์ ์œผ๋กœ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋ชฉํ‘œ ํ™˜๊ฒฝ์—์„œ๋งŒ ๊ตฌ๋™ํ–ˆ์ง€๋งŒ ๋„คํŠธ์›Œํฌ์— ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ๋“ฑ์žฅ์‹œ์ผฐ๋‹ค. ์›œ์€ ์„ผ๋“œ๋ฉ”์ผ(Sendmail)์˜ ๋ฒ„ํผ ๋ถ€ํ•˜์˜ ์ทจ์•ฝ์ ์„ ๊ณต๋žตํ•ด ์„œ๋ฒ„์—์„œ ์„œ๋ฒ„๋กœ ๊ฐ์—ผ๋˜๋ฉด์„œ ์ž์ฒด์ ์œผ๋กœ ํ™•์‚ฐ๋˜์—ˆ๋‹ค. ๋‹น์‹œ์—๋Š” ์œ ๋‹‰์Šค์™€ ์„ผ๋“œ๋ฉ”์ผ, ํ•‘๊ฑฐ(Finger)๋‚˜ ๊ทธ ๋ฐ–์˜ ์‹œ์Šคํ…œ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐฑ๋„์–ด๊ฐ€ ์žˆ๊ณ  ์‹œ์Šคํ…œ๊ฐ„ ๋ฐฉ์–ด ์ˆ˜๋‹จ์˜ ์ฐจ์ด๊ฐ€ ์–ด๋Š ์ •๋„์ธ์ง€ ํ™•์ธํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๋ชจ๋ฆฌ์Šค ์›œ์€ ๋˜ํ•œ ์ž๊ฐ€ ๋ณต์ œ๋ฅผ ํ•˜๋ฉด์„œ ์„œ๋ฒ„๋กœ์˜ ํ™•์‚ฐ์ด ๊ฐ€์†ํ™”๋˜์—ˆ๋‹ค.
์†Œํ”„ํŠธ์›จ์–ด์˜ ์ผ์ข…์ธ ์ด๋Ÿฌํ•œ ์นจ์ž…์ž๋Š” ๋น„์•ฝ์ ์ธ ๊ฒƒ์ด์—ˆ์œผ๋ฉฐ, ์ธํ„ฐ๋„ท์˜ ๋ฐ˜์‚ฌํšŒ์ ์ธ ์ธก๋ฉด์„ ๋ถ€๊ฐ์‹œํ‚ด์œผ๋กœ์จ ์„ธ๊ฐ„์˜ ์ด๋ชฉ์„ ์ง‘์ค‘์‹œ์ผฐ๋‹ค. ์ „์„ธ๊ณ„๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜์—ˆ์ง€๋งŒ ํ•œ ์ˆœ๊ฐ„๋„ ์ฃผ์˜๋ฅผ ๊ฒŒ์„๋ฆฌํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ณ„๊ธฐ๋ฅผ ๋งˆ๋ จํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ์›œ์˜ ์ถœํ˜„์ด์—ˆ๋‹ค. ๋ชจ๋ฆฌ์Šค์—๊ฒŒ ๊ฒฝ์˜๋ฅผ ๋ณด๋‚ธ๋‹ค. ๋ชจ๋ฆฌ์Šค ์›œ์€ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์„ ์ •๋˜์—ˆ๋‹ค.

์•„ ๋ฉ”๋ฆฌ์นธ ์—์–ด๋ผ์ธ(American Airlines)์˜ ์‚ฌ๋ธŒ๋ฅด(Sabre) ์‹œ์Šคํ…œ์€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ์ „์ˆ ์ ์ธ ์ˆ˜๋‹จ์—์„œ ์ „๋žต์ ์ธ ์ˆ˜๋‹จ์œผ๋กœ ์ง„ํ™”ํ•  ์ˆ˜ ์žˆ์Œ์„ ์ฆ๋ช…ํ•œ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. ์‚ฌ๋ธŒ๋ฅด๋Š” ๊ณ ๊ฐ์˜ ์—ฌํ–‰์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ์—ฌํ–‰์‚ฌ์—์„œ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ํ•ญ๊ณต๊ถŒ์„ ๋น„๊ตํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•ญ๊ณต๊ถŒ ๋ชฉ๋ก์—๋Š” ๊ฒฝ์Ÿ์‚ฌ์˜ ํ•ญ๊ณต๊ถŒ๋„ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์ง€๋งŒ ์•„๋ฉ”๋ฆฌ์นธ ์—์–ด๋ผ์ธ์˜ ํ•ญ๊ณต๊ถŒ์€ ๊ฒฝ์Ÿ์‚ฌ๋ณด๋‹ค ์ €๋ ดํ•˜๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์€ ์•„๋ฉ”๋ฆฌ์นธ ์—์–ด๋ผ์ธ๊ณผ ์—ฌํ–‰์‚ฌ์˜ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ์ ˆ๊ฐํ•ด์ฃผ์—ˆ์œผ๋ฉฐ, ์‹œ์žฅ ์ ์œ ์œจ์„ ๋†’์—ฌ์ฃผ์—ˆ๋‹ค. ์•„๋ฉ”๋ฆฌ์นธ ์—์–ด๋ผ์ธ์€ ๊ฒ€์ƒ‰ ํ™”๋ฉด์—์„œ ์ž์‚ฌ๋ฅผ ์ œ์ผ ์•ž์ชฝ์— ๋ณด์ด๊ฒŒ ํ•จ์œผ๋กœ์จ ๊ณ ๊ฐ์˜ ์„ ํƒ ๋นˆ๋„๋ฅผ ๋†’์˜€๋‹ค. ์•„๋ฉ”๋ฆฌ์นธ ์—์–ด๋ผ์ธ์€ ์ด๋ฅผ โ€˜์Šคํฌ๋ฆฐ์˜ ๊ณผํ•™โ€™์ด๋ผ๊ณ  ๋ถˆ๋ €์ง€๋งŒ ๋ฏธ๊ตญ ์ •๋ถ€๋Š” ์ด๋ฅผ ๋…์ ํ–‰์œ„๋กœ ๊ทœ์ •ํ•˜๊ณ  ๋ฐ˜๋…์ ๋ฒ• ๋งˆ๋ จ์— ๋‚˜์„  ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค.

์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด TOP 3
์ด์ œ 1์œ„๋ถ€ํ„ฐ 12์œ„๊นŒ์ง€์˜ ํ›„๋ณด๋“ค์„ ์ˆœ์œ„๋ณ„๋กœ ์ •๋ฆฌํ•ด๋ณผ ์ฐจ๋ก€์ด๋‹ค. ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—ญ์ˆœ์œผ๋กœ 4์œ„๊นŒ์ง€ ์„ ์ •ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

12. ๋ชจ๋ฆฌ์Šค ์›œ
11. ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ์ˆœ์œ„
10. ์•„ํด๋กœ ์œ ๋„ ์‹œ์Šคํ…œ
9. ์—‘์…€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ
8. ๋งคํ‚จํ† ์‹œ OS
7. ์‚ฌ๋ธŒ๋ฅด ์‹œ์Šคํ…œ
6. ๋ชจ์ž์ดํฌ ๋ธŒ๋ผ์šฐ์ €
5. ์ž๋ฐ” ์–ธ์–ด
4. IBM ์‹œ์Šคํ…œ 360 OS

3์œ„๋Š” ์œ ์ „์ž ๋ฐฐ์—ด ์†Œํ”„ํŠธ์›จ์–ด
3 ์œ„๋Š” ๊ฒŒ๋†ˆ์—ฐ๊ตฌ์†Œ์˜ ์œ ์ „์ž ๋ฐฐ์—ด ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ฐจ์ง€ํ–ˆ๋‹ค. ๋ชจ๊ฒํ…”๋Ÿฌ๋Š” โ€œ๊ฑฐ๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์€ ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ์ˆ ์ ์ธ ์ธก๋ฉด์—์„œ๋งŒ ๋ณธ๋‹ค๋ฉด 10์  ๋งŒ์ ์— 10์ ์„ ๋ฐ›์„ ๊ฒƒโ€์ด๋ผ๊ณ  ๋งํ–ˆ๋‹ค. ๊ฒŒ๋†ˆ์—ฐ๊ตฌ์†Œ์˜ ๋ฐฐ์—ด ์‹œ์Šคํ…œ์€ DNA๊ฐ€ 2๋งŒ ๊ฐœ์˜ ์ธ๊ฐ„์˜ ์œ ์ „์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ทœ๋ช…ํ–ˆ์œผ๋ฉฐ, ์ธ๊ฐ„์˜ ์œ ์ „์ž์™€ ๋ฐฐ์—ด ๋ถ„์„์„ ํŒŒ์•…ํ•˜๋Š” ์—„์ฒญ๋‚œ ๋ฐœ์ „์„ ๊ฑฐ๋‘์—ˆ๋‹ค. ๋ชจ๊ฒํ…”๋Ÿฌ๋Š” โ€œ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์œ ์ „ํ•™์„ 10๋…„ ์ด์ƒ ์•ž๋‹น๊ฒผ๋‹คโ€๊ณ  ํ‰๊ฐ€ํ–ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ์•„ํ”„๋ฆฌ์นด์—์„œ ์ธ๋ฅ˜์˜ ์ง„ํ™” ๊ณผ์ •์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค. ์ธ๊ฐ„ ๊ฒŒ๋†ˆ์€ ์ธ์ข…๊ฐ„ ์œ ์ „์ ์ธ ์ฐจ์ด๊ฐ€ ์–ด๋Š ์ •๋„์ธ์ง€ ๋ฐํ˜€์ฃผ์—ˆ๋‹ค. ๋˜ํ•œ ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์งˆ๋ณ‘์˜ ์›์ธ๊ณผ ์œ ์ „์ ์ธ ์ƒ๊ด€ ๊ด€๊ณ„๋„ ๊ทœ๋ช…ํ•ด์ฃผ์—ˆ๋‹ค. ์œ ์ „์ž ๋ฐฐ์—ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์œ„๋Œ€ํ•œ ์—ฐ๊ตฌ์™€ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ทธ์ฒ˜๋Ÿผ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋˜ ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ์—†์—ˆ๋‹ค.

2์œ„๋Š” ๊ด€๊ณ„ํ˜•DB์ธ IBM์˜ ์‹œ์Šคํ…œR
2 ์œ„๋กœ ์„ ์ •๋œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์ œ์‹œํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ IBM์˜ ์‹œ์Šคํ…œ R์ด๋‹ค. 1970๋…„๋Œ€์— ์—๋“œ๊ฑฐ ์ฝ”๋“œ๋Š” ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ๋ก ์„ ๋ฐ์ดํ„ฐ ์ €์žฅ์žฅ์น˜์™€ ๊ฒ€์ƒ‰์— ์ ์šฉ์‹œ์ผฐ๋‹ค. ๊ด€๋ จ ์ธ์ž๋“ค์„ ์กฐํ•ฉํ•ด ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์„ ๋„์ถœํ•ด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ๋ž€์ƒ‰๊ณผ ํฐ์ƒ‰, ๋นจ๊ฐ•์ƒ‰์˜ ์กฐํ•ฉ์€ ํ”„๋ž‘์Šค ๊ตญ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒ‰๊น”์ด ๋œ๋‹ค. ์ง‘ํ•ฉ๋ก ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ณ„๋„๋กœ ์ €์žฅ๋˜๊ฑฐ๋‚˜ ์ง€์ •๋˜์ง€ ์•Š๊ณ ๋„ ๊ด€๋ จ ์ธ์ž๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ํŠน์ • ์‹๋ณ„์ž๋งŒ์ด ์„ค์ •ํ•ด๋†“์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฆ‰์„์—์„œ ๋ชจ๋“  ๊ด€๋ จ ์š”์ธ์„ ์ƒˆ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
์‹œ์Šคํ…œ R์„ ๋น„๋กฏํ•ด ๊ทธ ๋’ค๋ฅผ ์ด์–ด ๊ฐœ๋ฐœ๋œ DB2, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ SQL ์„œ๋ฒ„, ์‚ฌ์ด๋ฒ ์ด์Šค, PostgreSQL, MySQL ๋“ฑ์€ ๋ฐ์ดํ„ฐ์˜ ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์งš์–ด๋‚ด๋Š”๋ฐ ํƒ์›”ํ•œ ์„ฑ๊ณผ๋ฅผ ๋ณด์ด๊ณ  ์žˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ณ ๊ฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๊ณ  ํŠน์ • ๊ณ ๊ฐ์˜ ์‡ผํ•‘ ํ˜•ํƒœ๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ˆ˜์ง‘๋˜์ž๋งˆ์ž ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋“ค์–ด๊ฐ€๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์ˆจ๊ฒจ์ง„ ๋ถ€๋ถ„์—์„œ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ์ฐพ์•„๋‚ธ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL ์•ก์„ธ์Šค ์–ธ์–ด๋Š” ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜, ์‚ฌ๋žŒ๋“ค์˜ ์ƒ๊ฐ์„ ์ฝ์–ด๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๋Š” ํ‰๊ฐ€๋ฅผ ๋ฐ›๊ณ  ์žˆ๋‹ค. ํ•„์ž๋Š” ์‹œ์Šคํ…œ R์ด ๊ตฌ๋™ํ•˜๊ธฐ์— ๋งค์šฐ ์›ํ™œํ•˜๋ฉฐ ํ™•์žฅ์„ฑ๋„ ๋›ฐ์–ด๋‚˜๊ณ  ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉ์„ฑ์„ ํ™•๋ณดํ–ˆ๋‹ค๋Š” ์ ์—์„œ ๋†’์€ ์ ์ˆ˜๋ฅผ ์ฃผ์—ˆ๋‹ค.

์œ ๋‹‰์Šค๊ฐ€ ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์ตœ๊ณ ์˜ ์†Œํ”„ํŠธ์›จ์–ด
์ด์ œ โ€˜๋„˜๋ฒ„์›โ€™์„ ๋ฐํž ์ฐจ๋ก€๊ฐ€ ์™”๋‹ค. ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์ตœ๊ณ ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋ฐ”๋กœ ์œ ๋‹‰์Šค์ด๋‹ค.
๋ฒจ ์—ฐ๊ตฌ์†Œ๋Š” ์œ ๋‹‰์Šค ์šด์˜์ฒด์ œ์˜ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•œ๋‹ค๊ณ  ๊ณต๊ณต์—ฐํžˆ ์•Œ๋ฆฌ๊ณ  ์žˆ์ง€๋งŒ ํ›„์›๊ธˆ์„ ๋‚ด๋ณธ ์ ์ด ํ•œ ๋ฒˆ๋„ ์—†์œผ๋ฉฐ, ๋ฒจ ์—ฐ๊ตฌ์†Œ์˜ ๊ฒฝ์˜์ง„๋“ค์€ ์ด๋Ÿฌํ•œ ์‚ฌ์‹ค์— ๋Œ€ํ•ด ์ „ํ˜€ ์•Œ์ง€๋„ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค. ๋ฒจ ์—ฐ๊ตฌ์†Œ๋Š” ์šด์˜์ฒด์ œ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ์œ„ํ•ด ๋ฉ€ํ‹ฑ์Šค(Multics)๋ผ๋Š” ๋ฉ€ํ‹ฐ๋ฒค๋” ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋“ค์„ ์žฅ๋ คํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์œ ๋ช…๋ฌด์‹คํ•ด์ง€์ž ๋ฒจ ์—ฐ๊ตฌ์†Œ์— ์ฐธ์—ฌํ–ˆ๋˜ ์ผ„ ํ†ฐ์Šจ์€ ๊ฐœ์ธ์šฉ ๋ฉ€ํ‹ฑ์Šค ๋ฒ„์ „์„ ๊ฐœ๋ฐœํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ํŽ ๋“œ๋จผ์ด ์ „ํ–ˆ๋‹ค(ํŽ ๋“œ๋จผ์€ AT&T ์œ ๋‹‰์Šค ํ”„๋กœ์ ํŠธ์—์„œ ์„œ์—ด ์ผ๊ณฑ๋ฒˆ์งธ ๊ฐœ๋ฐœ์ž์˜€์œผ๋ฉฐ, ํ˜„์žฌ ๋ฏธ๊ตญ ์ปดํ“จํ„ฐํ•™ํšŒ์˜ ์˜์žฅ์ด๋‹ค).
์ตœ๊ณ ์˜ ์ „์„ค์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด์ธ ์œ ๋‹‰์Šค๋Š” ์ž์ฒด์ ์œผ๋กœ ์ƒ๋ช…๋ ฅ์„ ์–ป์€ ๊ฐœ๊ฐœ์ธ์˜ ์†Œ์‚ฐ๋ฌผ์ด๋‹ค. ํ†ฐ์Šจ์€ 16 ๋˜๋Š” 32ํ‚ฌ๋กœ๋ฐ”์ดํŠธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง„ DEC์˜ PDP7 ๋ฏธ๋‹ˆ์ปดํ“จํ„ฐ์—์„œ ์œ ๋‹‰์Šค์˜ ์ œ1๋ฒ„์ „์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค. ํŽ ๋“œ๋จผ์€ โ€œ์œ ๋‹‰์Šค๋Š” ๋งŽ์€ ์ œ์•ฝ ์†์—์„œ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹คโ€๋ฉด์„œ, โ€œ๋ฉ”๋ชจ๋ฆฌ๋„ ์—†์—ˆ๊ณ  CPU ํŒŒ์›Œ๋„ ์—†์—ˆ๋‹ค. ํ˜„์žฌ์˜ ์†๋ชฉ์‹œ๊ณ„์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋‚˜ CPU๊ฐ€ ๊ทธ๋ณด๋‹ค ๋งŽ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ผ์šธ ๋”ฐ๋ฆ„โ€์ด๋ผ๊ณ  ๋งํ–ˆ๋‹ค.
์ดํ›„ ์šด์˜์ฒด์ œ ๊ฐœ๋ฐœ์—์„œ ํ†ฐ์Šจ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ฐ„์„ ๋น„์›Œ๋‘๊ธฐ ์œ„ํ•ด ์ปดํ“จํ„ฐ์˜ RAM์—์„œ ๋””์Šคํฌ๋กœ ๋ธ”๋ก ๋ฐ์ดํ„ฐ๋‚˜ ํŽ˜์ด์ง€๋ฅผ ์ด๋™์‹œ์ผฐ๋‹ค. ๋‹ค์‹œ ํ•„์š”ํ•˜๊ฒŒ ๋  ๋•Œ์—๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๋””์Šคํฌ๋กœ ์ด๋™ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ๋“ค์ธ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ํ†ตํ•ด, ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ์†Œํ˜• ์ปดํ“จํ„ฐ์—์„œ ํฐ ์šด์˜์ฒด์ œ๋„ ๊ตฌ๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ์˜ ์šด์˜์ฒด์ œ๋Š” ๋˜ํ•œ ์—ฌ๋Ÿฌ ๋ช…์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ฒ˜์Œ ๊ฐœ๋ฐœ ๋‹น์‹œ ํ•œ ๋ช…๋ฐ–์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด ์—ฐ์‚ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ์ด์— ๋ฐ˜ํ•ด ํ†ฐ์Šจ์˜ Unics(Uniplexed Information and Computing System)์€ ๋‘ ๋ช…์ด ๋™์‹œ์— ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์ปดํ“จํ„ฐ ๊ณผํ•™ ์—ฐ๊ตฌ ๊ทธ๋ฃน(Computer Science Research Group)์ด Unics์˜ ์†Œ์‹์„ ๋“ฃ๊ณ  ์ฐจ์šฉํ•˜๊ณ  ์‹ถ์–ดํ–ˆ๋‹ค. ์ด ๊ทธ๋ฃน์˜ ์š”์ฒญ์— ๋”ฐ๋ผ, ํ†ฐ์Šจ๊ณผ ๊ทธ์˜ ๋™๋ฃŒ์ธ ๋ฐ๋‹ˆ์Šค ๋ฆฌ์น˜๋Š” ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํ…์ŠคํŠธ ํฌ๋งท์„ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ๋กœ ํ•ฉ์˜ํ•ด PDP 11/20์ด ํƒ„์ƒํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ โ€˜๊ฑฐ๋ž˜โ€™๋ฅผ ํ†ตํ•ด ์œ ๋‹‰์Šค ํ…์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑ์ด ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋˜์—ˆ๋‹ค. Unics๊ฐ€ Unix๋กœ ๋˜์—ˆ์œผ๋ฉฐ C ์–ธ์–ด๋กœ ๋‹ค์‹œ ๊ฐœ๋ฐœ๋˜์–ด AT&T์— ์˜ํ•ด ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ III๊ฐ€ ์‹œ์žฅ์— ๋“ฑ์žฅํ–ˆ๋‹ค.
์œ ๋‹‰์Šค ์‹œ์Šคํ…œ III์ด ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ๊ฑฐ์˜ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์ด๊ธด ํ•˜์ง€๋งŒ ์กฐ๊ธˆ๋งŒ ๋” ์‚ดํŽด๋ณด์ž.

์ธํ„ฐํŽ˜์ด์Šค, ๋ถ„์‚ฐ, ํ™•์žฅ์„ฑ๋ฉด์—์„œ BSD๊ฐ€ ์›”๋“ฑ
์‹œ ์Šคํ…œ III๊ฐ€ ์ง„๋ณด๋œ ์œ ๋‹‰์Šค์ด๊ธด ํ•˜์ง€๋งŒ ์ฐฝ์œผ๋กœ ๋œ ์ฒด๊ณ„๋‚˜ ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๋ถ„์‚ฐ๋œ ์‹œ์Šคํ…œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฉด์—์„œ ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์•˜๋‹ค. IBM์˜ ๋Œ€ํ˜• ์ปดํ“จํ„ฐ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์„ ๋œ์–ด์ฃผ๊ธฐ ์œ„ํ•ด, AT&T๋Š” ์ ์€ ๋น„์šฉ์œผ๋กœ ์—ฐ๊ตฌ๊ธฐ๊ด€๊ณผ ๋Œ€ํ•™์—์„œ ์œ ๋‹‰์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค. ์ผ๋ถ€์—์„œ๋Š” ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด์„œ ์˜คํ”ˆ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์‹œ์ž‘๋œ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๋Š” ์‚ฌ์‹ค์ด ์•„๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค๋Š” ์œ ๋‹‰์Šค์˜ ์ดˆ๊ธฐ ๋ฐฐํฌํŒ์— ๊ทผ์›์„ ๋‘๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฐํฌํŒ์˜ ํ•˜๋‚˜๊ฐ€ ๋ฒ„ํด๋ฆฌ์˜ ์บ˜๋ฆฌํฌ๋‹ˆ์•„ ๋Œ€ํ•™์˜ ๋ฒ„์ „์œผ๋กœ, ํ•œ ์—ฐ๊ตฌ์›์ด ๋นŒ ์กฐ์ด์—๊ฒŒ ์นดํ”ผ๋ณธ์„ ๋ณด๋‚ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ–ˆ๋‹ค. ์ด๊ฒƒ์ด ์ตœ์ดˆ์˜ ์˜คํ”ˆ ์†Œ์Šค ์ฝ”๋“œ๋กœ, ๋””์ง€ํ„ธ ํŒŒ์ผ์ด ์•„๋‹Œ ์ž์„ฑ ํ…Œ์ดํ”„ ๋ฆด ํ˜•ํƒœ์˜€๋˜ ๊ฒƒ์œผ๋กœ ์ „ํ•ด์ง„๋‹ค. 1977๋…„ ์กฐ์ด์™€ ๋™๋ฃŒ ๋Œ€ํ•™์›์ƒ์ด ๋ฒ„ํด๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด ๋””์ŠคํŠธ๋ฆฌ๋ทฐ์…˜(BSD)๋ผ๊ณ  ์•Œ๋ ค์ง„ ํŽธ์ง‘ํŒ์„ ๋ฐœํ‘œํ–ˆ๋‹ค.
์œ ๋‹‰์Šค๋Š” ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋ชจ๋“ˆ๋กœ, ๊ฐ๊ฐ ํ•˜๋“œ์›จ์–ด ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€์™€ ์—ฐ๊ด€๋˜๋„๋ก ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•์€ IBM์˜ ์šด์˜์ฒด์ œ์— ๋น„ํ•ด ๊ฐœ์ •ํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์šฉ์ดํ–ˆ๋‹ค. ๋ฒ„ํด๋ฆฌ ๋Œ€ํ•™์›์ƒ๋“ค์€ ์‹ ์†ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ–ˆ๋‹ค. ๊ทธ๋“ค์€ ๋”์šฑ ๋น ๋ฅธ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋„คํŠธ์›Œํ‚น์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ๋ฒ„ํด๋ฆฌ ์†Œ์ผ“ API๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ์˜ ๋กœ์ปฌ ๋””์Šคํฌ๋กœ ์‰ฝ๊ฒŒ ๋ณด๋‚ด๋„๋ก ํ–ˆ๋‹ค.
๋ฐฉ์œ„ ์‚ฐ์—…์ฒด์ธ ๋ณผํŠธ ๋ฒ„๋ผ๋„ฅ&๋‰ด๋จผ(Bolt Beranek & Newman)์€ ๋‹น์‹œ ๊ตญ๋ฐฉ์„ฑ์—ฐ๊ตฌ๊ณ„ํš์ฒ˜(DARPA)์˜ TCP/IP ๋„คํŠธ์›Œํ‚น ๊ณต์‹ ์ง€์ • ์—…์ฒด์˜€๋‹ค. BSD 4.1a์—์„œ, ๋ฒ„ํด๋ฆฌ ๋Œ€ํ•™์›์ƒ๋“ค์€ ์ž์‹ ๋“ค์˜ ์ž…๋ง›์— ๋งž๊ฒŒ TCP/IP๋ฅผ ๋ฐ”๊พธ์—ˆ๋‹ค. 1986๋…„ DARPA๋Š” BSD 4.3์—์„œ TCP/IP๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ, BBN๋ณด๋‹ค ๋†’์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›์•˜๋‹ค.
๋นŒ ์กฐ์ด๋Š” 1982๋…„์— ๋ฒ„ํด๋ฆฌ๋ฅผ ๋– ๋‚˜ ์ฌ ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ์˜ ๊ณต๋™ ์„ค๋ฆฝ์ž๊ฐ€ ๋œ ๋’ค BSD๋ฅผ ํ† ๋Œ€๋กœ SunOS์™€ ์†”๋ผ๋ฆฌ์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค. ์ฌ๊ณผ AT&T๋Š” ํ†ตํ•ฉ๋œ ์‹œ์Šคํ…œ V ๋ฆด๋ฆฌ์ฆˆ 4๋ฅผ ๊ฐœ๋ฐœํ•ด ์‹œ์Šคํ…œ V ํ–ฅ์ƒ์„ ์œ„ํ•ด ํ˜‘๋ ฅํ•ด๋‚˜๊ฐ”๋‹ค. AT&T๋Š” ์œ ๋‹‰์Šค์— ๋Œ€ํ•œ ํˆฌ์ž๋น„๋ฅผ ํšŒ์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐ€๊ฒฉ์„ ๋†’์˜€๋‹ค.
ํ•˜์ง€๋งŒ ๋ฒ„ํด๋ฆฌ ๋Œ€ํ•™์ƒ๋“ค์€ ์‰ฝ๊ฒŒ ๋ฌผ๋Ÿฌ์„œ์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋“ค์€ BSD ์œ ๋‹‰์Šค๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑ, AT&T ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ €๋ ดํ•œ ์ธํ…” ํŒŒ์ผ์—์„œ ๊ตฌ๋™ ๊ฐ€๋Šฅํ•œ ์ƒˆ๋กœ์šด ๋ฐฐํฌํŒ์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค. ์ž์‚ฌ์˜ ์ˆ˜์ต์— ์•…์˜ํ–ฅ์„ ์šฐ๋ คํ•œ AT&T์˜ ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ ์—ฐ๊ตฌ์†Œ๋Š” BSDi๋ฅผ ๋ฒ•์›์— ์ œ์†Œํ–ˆ์œผ๋ฉฐ, ์ธํ…”์„ ์œ„ํ•œ ๋ฒ„ํด๋ฆฌ ์œ ๋‹‰์Šค๋ฅผ ๋ฐฐํฌํ–ˆ๋‹ค. ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ ์—ฐ๊ตฌ์†Œ๋Š” BSDi์— ๋Œ€ํ•œ ์ œ๊ณต๊ธˆ์ง€๋ช…๋ น์„ ์–ป์–ด๋‚ด์—ˆ์œผ๋ฉฐ ์ˆ˜๋…„๋™์•ˆ ์ธํ…” ๊ธฐ๋ฐ˜์˜ ์œ ๋‹‰์Šค๋ฅผ ๋…์ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์œ ๋‹‰์Šค์˜ ๊ฐ€๊ฒฉ์ด ๋„ˆ๋ฌด ๋น„์ŒŒ๊ธฐ ๋•Œ๋ฌธ์— MIT ์ธ๊ณต ์ง€๋Šฅ ์—ฐ๊ตฌ์†Œ์˜ ๋ฆฌ์ฐจ๋“œ ์Šคํ†จ๋จผ์€ ๋‹ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•„์•ผ๋งŒ ํ–ˆ๋‹ค. ๊ทธ๋Š” ์ž์‹ ์˜ ๋™๋ฃŒ ์—ฐ๊ตฌ์›๋“ค์ด ๋ฐœํ‘œํ•œ ๊ฒƒ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์—ญ์‹œ ์ง€์  ์ž์‚ฐ์ด๋ฉฐ ๋ฌด๋ฃŒ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์ž์‹ ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก GNU๋ผ ๋ถˆ๋ฆฌ๋Š” ์ผ๋ จ์˜ ํˆด์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

๋ˆ„์  ๋ฐœ์ „๋˜์–ด์˜จ ๊ณผ์ • ์ƒ BSD 4.3์ด 1์œ„
์ด ๋Ÿฌํ•œ ํˆด์€ ํ•€๋ž€๋“œ ํ—ฌ์‹ฑํ‚ค์˜ ๋ฆฌ๋ˆ„์Šค ํ† ๋ฐœ์ฆˆ์—๊ฒŒ๋„ ์˜ํ–ฅ์„ ๋ผ์ณค๋‹ค. ๋‹น์‹œ 21์„ธ ๋Œ€ํ•™์ƒ์ด์—ˆ๋˜ ํ† ๋ฐœ์ฆˆ๋Š” ์ž์‹ ์˜ ์ธํ…” PC์—์„œ ๊ตฌ๋™์ด ๊ฐ€๋Šฅํ•œ ์œ ๋‹‰์Šค ๋ฒ„์ „์„ ์ฐพ๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋Š” GNU ํˆด์„ ํ™œ์šฉ, ๋ฆฌ๋ˆ…์Šค ์ปค๋„์„ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” ์ธํ…” ํ•˜๋“œ์›จ์–ด์—์„œ BSD๋ฅผ ๋Œ€์ฒดํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ๊ธฐ๊ฐ€ ๋†’์•„์กŒ๋‹ค. ํ˜„์žฌ, ๋ฆฌ๋ˆ…์Šค๋Š” ํ•˜์ด ์—”๋“œ ์‹œ์žฅ๋„ ์œ„ํ˜‘ํ•˜๊ณ  ์žˆ๋Š” ์กด์žฌ๋กœ ๋ถ€์ƒํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ๋ˆ…์Šค๋Š” ๋ถˆ์™„์ „ํ•œ GNU ์‹œ์Šคํ…œ๊ณผ ์ด์ „ ๋ฒ„์ „์˜ BSD๋“ค์„ ๋‹จ์ˆœํžˆ ๋ณต์ œํ•˜๊ณ  ์žˆ์„ ๋ฟ์ด๋‹ค. ์ด๋“ค์€ ๋ฆฌ๋ˆ…์Šค์— ๊ตฌํ˜„๋œ ๋ชจ๋“  ์ฃผ์š” ๊ฐœ๋…์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค. ์ด๊ฒƒ์ด ์„ผ๋“œ๋ฉ”์ผ๊ณผ BIND๊ฐ€ ์‹œ์Šคํ…œ V๊ฐ€ ์•„๋‹Œ ๋ฒ„ํด๋ฆฌ ์œ ๋‹‰์Šค์—์„œ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๋Š” ์ด์œ ์ด๋‹ค. ๋˜ํ•œ ์œˆ๋„์šฐ์— TCP/IP๋ฅผ ์ตœ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ BSD ์œ ๋‹‰์Šค๋ฅผ ์ ์šฉํ•˜๋ ค๋Š” ์ด์œ ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ๋‹ค. DARPA์˜ ๊ฒฝ์šฐ ์•ŒํŒŒ๋„ท(Arpanet)์„ ๊ตฌ์ถ•ํ•˜๋ ค ํ–ˆ์„ ๋•Œ ๊ธฐ์กด ํ”„๋กœํ† ์ฝœ์„ ๋ฒ„๋ฆฌ๊ณ  BSD ์œ ๋‹‰์Šค TCP/IP๋กœ ์ „ํ™˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

์ด ์ œ ์ตœ์ข… ํŒ๋‹จ์„ ๋‚ด๋ ค์•ผ ํ•œ๋‹ค. ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ์œ„๋Œ€ํ•œ ์†Œํ”„์›จ์–ด 1์œ„๋Š” ์„ธ๊ณ„์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ผ์นœ BSD 4.3์ด๋‹ค. ๋ฌผ๋ก  ์ƒ์—…์ ์œผ๋กœ ๋” ํฐ ์„ฑ๊ณต์„ ๊ฑฐ๋‘” ๋‹ค๋ฅธ ์œ ๋‹‰์Šค ๋ฒ„์ „๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ BSD ์‹œ์Šคํ…œ์ด ๊ณ„์† ๋ˆ„์ ๋˜์–ด ๋ฐœ์ „๋˜์–ด ์˜จ ๊ณผ์ •์„ ๊ฐ์•ˆํ•ด๋ณผ ๋•Œ, BSD 4.3์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ˜์‹ ์˜ โ€˜๋””๋”ค๋Œโ€™์ด ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

Charles Babcock(Information Week)

[์ถœ์ฒ˜] ์ปดํ“จํ„ฐ์›”๋“œ 2006๋…„ 11์›”ํ˜ธ
๋ฐ˜์‘ํ˜•

์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
 
  ๊ธ€์“ด์ด : ํ‘ธ์šฐ     ๋‚ ์งœ : 08-03-01 19:09     ์กฐํšŒ : 486    


์š”์ฆ˜ ํ†ต ๊ธ€์„ ์•ˆ ์˜ฌ๋ ธ๋„ค์š”.
์š”์ฆ˜ ํšŒ์‚ฌ์ผ๋กœ ์ •์‹ ์ด ์—†๋„ค์š”.
์ฃ„์†กํ•˜๊ตฌ์š”. ^^; 
์•„๋ฌดํŠผ ์ด๋ฒˆ์—๋Š” UNIX/LINUX์˜ Deamon ํ”„๋กœ์„ธ์Šค ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
 
1. Daemon์ด๋ž€?
 
๋ญ ์ด๊ธ€์„ ๊ด€์‹ฌ์ด ์žˆ์–ด์„œ ์ฝ๊ณ  ๊ณ„์‹œ๋Š” ๋ถ„ ์ค‘์— Daemon์ด ๋ญ”์ง€๋ฅผ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„์€ ์—†๊ฒ ์ง€๋งŒ...
๊ทธ๋ž˜๋„ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ด…๋‹ˆ๋‹ค.
Daemon์˜ ๋œป ์ž์ฒด๋Š” "์•…๋งˆ", "์•…๋ น", "๊ท€์‹ "๊ณผ ๊ฐ™์ด ์ข€ ๋ฌด์‹œ๋ฌด์‹œ ํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ Daemon์˜ ์–ด์›์€ ์‹ ํ™”์—์„œ ์‹ ๊ณผ ์ธ๊ฐ„์‚ฌ์ด์˜ ์ดˆ์ž์—ฐ์ ์ธ ์˜์ ์กด์žฌ๋กœ์„œ์˜ ์ˆ˜ํ˜ธ์‹ ์—์„œ ๋‚˜์™”๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ญ ์ข‹์€์ชฝ์œผ๋กœ ์ƒ๊ฐํ•˜์ฃ .
์ปดํ“จํ„ฐ ์ƒ์—์„œ Daemon์€ ๊ฒ‰์œผ๋กœ๋Š” ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ํ•ญ์ƒ ๋’ค์—์„œ ๋ญ”๊ฐ€๋ฅผ ๊ณ„์†ํ•ด์„œ ์ˆ˜ํ–‰ํ•ด ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋กœ httpd, ftpd, telnetd ๋“ฑ...
์ด๋Ÿฐ๋ฉด์—์„œ ์™œ Daemon์ด๋ผ๋Š” ์ด๋ฆ„ ์ง€์—ˆ๋Š”์ง€ ์ดํ•ด๊ฐ€ ๊ฐ€๋„ค์š”.
์œˆ๋„์šฐ์ฆˆ์—์„œ๋Š” Daemon์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๋ญ”๊ฐ€ ๊ผญ ํŠ€๊ฒŒ ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”์ง€ ๋ชฐ๋ผ๋„... UNIX/LINUX์˜ Daemon๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ Service ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
"๋ฐ๋ชฌ"์€ ์ด๋ฆ„์— ๋ญ”๊ฐ€ ์ฒ ํ•™์„ ๋‹ด์•„ ์ง€์€๊ฒƒ ๊ฐ™์€๋ฐ... "์„œ๋น„์Šค"... ์ฐธ ๋‹จ์ˆœํ•ด์„œ ์ข‹๊ธด ์ข‹๋„ค์š”. ใ…‹ใ…‹  ^^;
 
Daemon ํ”„๋กœ๊ทธ๋žจ์ด ๋˜๋ ค๋ฉด ๋ช‡๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ–์ถ”์–ด์•ผ ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ "OS๊ฐ€ ๋ถ€ํŒ…๋˜๋ฉด ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ž…์—†์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ"์ž…๋‹ˆ๋‹ค.
์ด ๋ง์€ ๋‹ค์‹œ ๋งํ•ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜์—ฌ ๊ตณ์ด ์‹คํ–‰ํ•˜์ง€ ์•Š์•„๋„ OS์˜ initํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ ์ด๊ณ  ์ด๋Ÿด๋ ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์–ดํ•˜๋Š” ํ„ฐ๋ฏธ๋„(tty)๋ฅผ ๊ฐ–์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋งํ•˜๋ฉด ๋ˆ„๊ตฐ๊ฐ€ ๋กœ๊ทธ์ธ ํ•ด์„œ ๋ฐ๋ชฌ์„ ์‹œ์ž‘์‹œ์ผฐ๋‹ค๋ฉด ๋กœ๊ทธ์•„์›ƒํ•  ๋•Œ ํ•ด๋‹น ๋ฐ๋ชฌ์€ ๊ณ„์†ํ•ด์„œ ์‚ด์•„ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ง๋„ ๋ฉ๋‹ˆ๋‹ค.
 
์ด์ œ ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ๊ฐ–๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ฃ .
 
 
2. ๋กœ๊ทธ ์•„์›ƒ์‹œ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ
 
์šฐ์„  ๋ฐ๋ชฌ์€ ์•„๋‹ˆ๋”๋ผ๋„ ๋ฐ๋ชฌ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ณ„์†ํ•ด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
 
๊ธฐ๋ณธ ์†Œ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
 
#include <stdio.h>

int work()
{
        FILE *fp;
        unsigned long count=0;

        fp=fopen("/tmp/daemon.out""wt");
        if(fp==NULL) {
                printf("File Open Error\n");
                return -1;
        }

        while(1){
                sleep(1);
                fprintf(fp, "%lu\n", count);
                fflush(fp);
                fprintf(stdout, "%lu\n", count++);
        }
        fclose(fp);

        return 0;
}

int main(int argc, char *argv[])
{
        work();

        return 0;
}
 
 
์œ„์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐ„๋‹จํ•˜๋‹ˆ๊น ๋ณด์‹œ๋ฉด ์•„์‹œ๊ฒ ์ง€๋งŒ main()ํ•จ์ˆ˜๊ฐ€ ์ˆ˜ํ–‰๋˜๋ฉด work()๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
work()ํ•จ์ˆ˜๋Š” ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ 1์ดˆ๋งˆ๋‹ค "/tmp/daemon.out"ํŒŒ์ผ์— ์นด์šดํŒ…์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
๋˜ ํ‘œ์ค€์ถœ๋ ฅ์œผ๋กœ๋„ ๊ฐ™์€ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.
์œ„์˜ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ daemon์ด๋ผ๋Š” ์‹คํ–‰ํŒŒ์ผ์„ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ํ•˜๊ณ  ๋‹ค์Œ์˜ ๊ธ€๋“ค์„ ์ž‘์„ฑํ† ๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
 
์ž ๊ทธ๋Ÿผ ๋กœ๊ทธ์•„์›ƒ์ด ๋ ๋•Œ ์–ด๋–ค ํ˜„์ƒ์ด ์ผ์–ด๋‚ ์ง€์— ๋Œ€ํ•ด ํ•œ๋ฒˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ฃ .
 
๋กœ๊ทธ์•„์›ƒํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์ด ๋Š๊ธฐ๊ฒŒ ๋˜๋ฉด OS ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์„ ์ œ์–ด๋‹จ๋ง๋กœ ์‚ฌ์šฉํ•˜๋˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ํŠน๋ณ„ํ•œ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด ์‹ ํ˜ธ๊ฐ€ SIGHUP, ์ฆ‰, Hangup ์‹œ๊ทธ๋„์ž…๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋žจ์€ ์ด Hangup ์‹œ๊ทธ๋„์„ ๋ฐ›์œผ๋ฉด ์ •์ƒ์ข…๋ฃŒ๋ฅผ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋ญ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•Œ์•„์„œ ์ •์ƒ์ข…๋ฃŒ ํ•œ๋‹ค๊ธฐ ๋ณด๋‹ค๋Š” ์ด ์‹œ๊ทธ๋„์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ผ๋Š” ๋ฃจํ‹ด์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค๋Š” ์กฐ์šฉํžˆ OS๊ฐ€ ์ฃฝ์ด๋Š” ๊ฒƒ์ด์ฃ .
 
OS์— SIGHUP์„ ๋ฌด์‹œํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” 'nohup'์ด๋ผ๋Š” ์‰˜๋ช…๋ น์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
 
#nohup daemon&amp;amp;
 
์œ„์˜ ๋ช…๋ น์–ด ์ค‘ daemon์€ ๋ฐ๋ชฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์ด๋ฆ„์ด๊ณ  ๋งˆ์ง€๋ง‰ &๋Š” ์ด ๊ธ€์˜ ์ฃผ์ œ์™€๋Š” ์ƒ๊ด€์—†์ง€๋งŒ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•ด์„œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋‹ค์‹œ ์–ป๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ daemon์„ ์‹คํ–‰ํ•œ ๋’ค ๋กœ๊ทธ์•„์›ƒํ•˜๊ฑฐ๋‚˜ ๋‹จ๋ง๊ธฐ๋ฅผ ๋Š๊ณ  ๋‹ค์‹œ ์ ‘์†ํ•œ ๋‹ค์Œ "ps -ef | grep daemon" ๋ช…๋ น์„ ํ†ตํ•ด ๋ณด์‹œ๋ฉด daemon์ด ์‚ด์•„ ์žˆ์Œ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์œผ์‹ค ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
๋˜ํ•œ "tail -f /tmp/daemon.out" ํ•ด์„œ ๋ณด์‹œ๋ฉด ์‚ด์•„ ์žˆ์„ ๋ฟ ๋”๋Ÿฌ ์›๋ž˜์˜ ๊ธฐ๋Šฅ๋„ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰ ํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ์›๋ž˜ daemon์€ ํŒŒ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ™”๋ฉด์—๋„ ์นด์šดํŒ… ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ ์œ„์˜ ๋ช…๋ น์˜ ์ˆ˜ํ–‰ ํ›„์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
 
appending output to `nohup.out'<br />
 
์ด๋Š” nohup ๋ช…๋ น์–ด๊ฐ€ daemon์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ํ˜„์žฌ ๊ฒฝ๋กœ์˜ 'nohup.out'์ด๋ผ๋Š” ํŒŒ์ผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
 
์–ด์ฐŒ๋˜์—ˆ๊ฑด ์‰˜์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ๋ชฌ๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋„๋ก ํ•ด ๋ณด์•˜๋„ค์š”. 
 
์ž ์ด๋ฒˆ์—๋Š” 'nohup'๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‹œ์Šคํ…œ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
 
๊ณจ์ž๋Š” ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ SIGHUP์‹œ๊ทธ๋„์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
 
 ์œ„ ํ•จ์ˆ˜์— #include <signal.h> ๋ฅผ ํฌํ•จํ•˜๊ณ  mainํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ ์นฉ๋‹ˆ๋‹ค.
 
 
int main(int argc, char *argv[])
{
        signal(SIGHUP, SIG_IGN);

        work();

        return 0;
}
 
 
์ง€๊ธˆ ๋ถ€ํ„ฐ๋Š” work()ํ•จ์ˆ˜์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์ด ๊ท€์ฐฎ์•„ ์ง€๋ฏ€๋กœ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋‚ด๋ณด๋Š” ๋ฌธ์žฅ์€ ์ ์ ˆํžˆ ์‚ญ์ œํ•˜์…”๋„ ์ข‹์Šต๋‹ˆ๋‹ค.  
์œ„์˜ main()ํ•จ์ˆ˜๋Š” signal()ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด SIGHUP์‹œ๊ทธ๋„์„ ๋ฌด์‹œํ•˜๋„๋ก ์„ค์ • ํ•œ ๋’ค work()ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
 
์ปดํŒŒ์ผ ํ›„ ํ…Œ์ŠคํŠธ๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ชซ์œผ๋กœ ํ•˜๊ตฌ์š”.
 
SIGHUP์„ ๋ฌด์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ์ง€๋งŒ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ ์ด๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์ž์‹ ์˜ ๊ทธ๋ฃน์•„์ด๋””๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
 
์ด๋Š” ๋กœ๊ทธ ์•„์›ƒ์‹œ ํ˜„์žฌ ํ„ฐ๋ฏธ๋„์„ ์ œ์–ด ๋‹จ๋ง๊ธฐ๋กœ ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์— OS๊ฐ€ SIGHUP์‹œ๊ทธ๋„์„ ๋ณด๋‚ผ ๋•Œ ์‰˜ํ”„๋กœ์„ธ์Šค์˜ ์•„์ด๋””๋ฅผ ๊ทธ๋ฃน์•„์ด๋””๋กœ ๊ฐ–๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ณด๋‚ธ๋‹ค๋Š” ๊ฒƒ์— ์ฐฉ์•ˆํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
 
์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์€ ํŠน์ • ์‰˜ํ”„๋กœ์„ธ์Šค์—์„œ ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์•„์ด๋””๋Š” ์ˆ˜ํ–‰ ํ™˜๊ฒฝ์ด ๋˜์—ˆ๋˜ ์‰˜ํ”„๋กœ์„ธ์Šค ์•„์ด๋””๋ฅผ ๊ฐ–๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ ํ”„๋กœ์„ธ์Šค ๋‚ด์—๊ฒŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 
 
int main(int argc, char *argv[])
{
        int newpgid;

        newpgid = setpgrp();

        work();

        return 0;
}
 
์œ„์˜ ์†Œ์Šค์— ๋ณด์ด๋Š” setpgrp()ํ•จ์ˆ˜๋Š” ์ž์‹ ์˜ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์„ ์ž์‹ ์˜ ํ”„๋กœ์„ธ์Šค์•„์ด๋””๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋กœ๊ทธ์•„์›ƒ์‹œ ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์•„์˜ˆ SIGHUP์‹œ๊ทธ๋„์„ ๋ฐ›์ง€๋„ ์•Š์œผ๋ฏ€๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
 
์ž ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๋ฐ๋ชฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฒ•์ด๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ๊ณผ ์ด๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ๊ฐ„๋‹จํžˆ ๋ฐ๋ชฌ๊ณผ ์œ ์‚ฌํ•œ ํšจ๊ณผ ๋‚ด๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋  ๋“ฏ ์‹ถ์Šต๋‹ˆ๋‹ค.
 
 
3. fork์— ์˜ํ•œ Daemon๋งŒ๋“ค๊ธฐ
 
 
์œ„์—์„œ ์ด์•ผ๊ธฐ ํ•œ ๋ฐฉ๋ฒ•๋“ค๋„ ๋ญ ์ž˜๋ชป๋œ ๋ฐฉ๋ฒ•๋“ค์€ ์•„๋‹ˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์ด์ œ๋ถ€ํ„ฐ ์ด์•ผ๊ธฐ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ฃผ๋กœ ๋ฐ๋ชฌ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
main()ํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊พธ์„ธ์š”.
 
int main(int argc, char *argv[])
{
        int pid;

        pid=fork();
        switch(pid){
        case -1:
                fprintf(stderr, "Fork Error\n");
                break;
        case 0:         // child
                break;
        default:        // parent
                return 0;
        }

        work();

        return 0;
}
 
์œ„์˜ main()ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜์ž ๋งˆ์ž fork()๋ฅผ ์ˆ˜ํ–‰ํ•ด์„œ ์ž์‹ํ”„๋กœ์„ธ์Šค๋Š” work()ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ถ€๋ชจํ”„๋กœ์„ธ์Šค๋Š” ์ข…๋ฃŒํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์‚ฌ์‹ค ์ž์‹ํ”„๋กœ์„ธ์Šค๋Š” ์•„์ง ์‚ด์•„ ์žˆ๋Š”๋ฐ ๋ถ€๋ชจํ”„๋กœ์„ธ์Šค๊ฐ€ ํ„ฐ๋ฏธ๋„๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ณ ๋กœ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ์ œ์–ด๋‹จ๋ง๊ธฐ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๊ฒŒ ๋˜๊ณ  ๋ถ€๋ชจ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๊ณ ์•„ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋˜์—ˆ๋„ค์š”.
์ด๋ ‡๊ฒŒ ๊ณ ์•„ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด OS๋Š” ์ด ๊ณ ์•„ ํ”„๋กœ์„ธ์Šค๋ฅผ initํ”„๋กœ์„ธ์Šค์˜ ์ž์‹์œผ๋กœ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.
๋ถ€๋ชจ,์ž์‹,๊ณ ์•„๋ฅผ ์ด์•ผ๊ธฐ ํ–ˆ์œผ๋‹ˆ ์ž…์–‘์ด๋ผ๊ณ  ํ•ด์•ผ ํ• ๊นŒ์š”? ใ…‹ใ…‹ใ…‹
ํ•˜์ง€๋งŒ ์›๋ž˜ initํ”„๋กœ์„ธ์Šค๋Š” 1๋ฒˆ ํ”„๋กœ์„ธ์Šค๋กœ์„œ ์กฐ์ƒ ํ”„๋กœ์„ธ์Šค์— ํ•ด๋‹น๋จ์œผ๋กœ ์ž…์–‘์ด๋ผ๊ณ  ํ•˜๊ธฐ๋Š” ์ข€ ๊ทธ๋ ‡๋„ค์š”.
 
์•„๋ฌดํŠผ ์œ„์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ข€๋น„๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋„ ์•Š๊ตฌ์š”.
 
ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ์ผ€์ด์Šค๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ฃ .
daemon๋„ ํ”„๋กœ์„ธ์Šค์ด๋ฏ€๋กœ ํ˜„์žฌ ์ž‘์—…๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ด daemon์ด ์‹คํ–‰๋œ ํ›„ daemon์„ ์‹คํ–‰ ์‹œ์ผฐ๋˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์†ํ•œ ํŒŒ์ผ์‹œ์Šคํ…œ์„ "umount" ์‹œํ‚ค๋ ค ํ•œ๋‹ค๋ฉด OS๋Š” ํ•ด๋‹น ํŒŒ์ผ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค๊ณ  umount ํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
์ด๋Ÿฐ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฐ๋ชฌ์„ ๋‚ด๋ ค์•ผ ํ•˜๋Š”๋ฐ...
๋”์šฑ ๋‚˜์œ ๊ฒฝ์šฐ๋Š” ์–ด๋–ค ๋ฐ๋ชฌ์ด ์ด ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ์•Œ๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค๋Š” ๊ฒƒ์ด์ฃ .
๊ทธ๋ž˜์„œ ๋ฐ๋ชฌ์€ ๋ฐ๋ชฌ์ด ๋˜๊ธฐ ์ „์— ํ˜„์žฌ ๊ฒฝ๋กœ๋ฅผ "/'์™€ ๊ฐ™์ด "umount"๋  ์ˆ˜ ์—†๋Š” ๊ณณ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
 
๋˜ ํ•œ๊ฐ€์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ์€ ํ˜„์žฌ daemon์€ ๋ญ ํŒŒ์ผ์— ์ˆซ์ž๋งŒ ์ ๊ณ  ์žˆ์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“œ๋Š” deamon์€ ์–ด๋–ค ์ผ์„ ํ•˜๊ฒŒ ๋  ์ง€ ์‚ฌ์‹ค ๋ชจ๋ฆ…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด daemon์ด ๋˜ fork๋ฅผ ํ•ด์„œ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ฐ–์„ ์ˆ˜๋„ ์žˆ๊ณ  exec()ํ•จ์ˆ˜๋‚˜ system()ํ•จ์ˆ˜์— ์˜ํ•ด ์•„์˜ˆ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋•Œ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ˜„์žฌ daemon์ด ์ œ์–ด ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ด ๋˜ํ•œ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?
๊ทธ๋ž˜์„œ ๋ฐ๋ชฌํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ๋ชฌ์ด ๋œ ์ง ํ›„ ์ž์‹ ์ด ์†ํ•œ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์˜ ๋ฆฌ๋”๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค ์„ธ์…˜์„ ๋งŒ๋“ค๊ณ  ์ž์‹ ์ด ๋ฆฌ๋”๊ฐ€ ๋œ ํ›„ ๋‹ค์Œ ์ž‘์—…๋“ค์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.  ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ setsid()๋ผ๋Š” ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค. (์ฐธ์กฐ: http://teamblog.joinc.co.kr/yundream/226)
 ์•„๋ž˜ ์†Œ์Šค๋Š” chdir()๊ณผ setsid()ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์œ„์—์„œ ์ด์•ผ๊ธฐํ•œ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
 
int main(int argc, char *argv[])
{
        int pid;

        pid=fork();
        switch(pid){
        case -1:
                fprintf(stderr, "Fork Error\n");
                break;
        case 0:         // child
                break;
        default:        // parent
                return 0;
        }

        chdir("/");
        setsid();

        work();

        return 0;
}
 
 
์ž ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋ฉด ๋ญ ๋ฐ๋ชฌ์ด ์ž˜ ๋งŒ๋“ค์–ด ์ง„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
 
์ถ”๊ฐ€๋กœ ์‹ค์ œ ๋ฐ๋ชฌ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜์‹ค ๋•Œ ์ฃผ์˜ํ•˜์‹ค ์ ์€ ์‹œ๊ทธ๋„์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๊ผญ ํ•˜์‹œ๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
์œ„์˜ ์ƒ˜ํ”Œ ์†Œ์Šค๋Š” ๋ญ ํŠน๋ณ„ํ•˜๊ฒŒ ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ๋ฅผ ํ• ๊ป˜ ๋”ฑํžˆ ์—†์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด ์›น์„œ๋ฒ„์™€ ๊ฐ™์ด ํ†ต์‹  ํ”„๋กœ๊ทธ๋žจ์ธ ๊ฒฝ์šฐ SIG_PIPE์™€ ๊ฐ™์€ ์‹œ๊ทธ๋„์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
 
 
4. ์˜ค๋šœ๊ธฐ ๊ฐ™์€ Daemon๋งŒ๋“ค๊ธฐ
 
๋งˆ์ง€๋ง‰์œผ๋กœ ์ด์•ผ๊ธฐ ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ๋ฐ๋ชฌ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ์•„๋‹ˆ๊ตฌ์š” ํŒ๊ฐ™์€ ๊ฑฐ๋ผ๊ณ  ํ• ๊นŒ์š”?
๋ฐ๋ชฌ์€ ์„œ๋น„์Šค ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค ๋ณด๋‹ˆ๊น...
์‹œ์Šคํ…œ์ด ์‹œ์ž‘๋˜๋ฉด ์‹œ์ž‘๋˜์„œ ๋๋‚ ๋•Œ ๊นŒ์ง€ ์‚ด์•„ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ...
์šฐ๋ฆฌ๊ฐ€ ์งœ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ์žฅ๋‹ดํ•  ์ˆ˜๋Š” ์—†๊ฒ ์ฃ ? (์ €๋งŒ ๊ทธ๋Ÿฐ๊ฐ€?)
 
๋งŒ์•ฝ ๋ฐ๋ชฌ์œผ๋กœ ๋„์šด ํ”„๋กœ๊ทธ๋žจ์ด ์ฃฝ์œผ๋ฉด ํƒ€๊ฒฉ์ด ํฌ์ฃ .
๋ญ ๊ทธ ํƒ€๊ฒฉ์€ ํƒ€๊ฒฉ์ด๋”๋ผ๋„ ์„ธ์…˜์ด๋‚˜ ํŠธ๋žœ์žญ์…˜์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ๋ผ๋ฉด ๋นจ๋ฆฌ ๋‹ค์‹œ ์‹œ์ž‘์ด๋ผ๋„ ์‹œ์ผœ์„œ ์ •์ƒํ™”๋ฅผ ์‹œํ‚ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
 
์ด๋Ÿฐ ๊ฒฝ์šฐ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋จผ์ € ์ผ๋ฐ˜ ๋ฐ๋ชฌ์„ ํ•˜๋‚˜ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜ forkํ•˜์‹œ๊ตฌ์š”.
๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ fork๋ฅผ ํ•ด์„œ ์ž์‹ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋น„์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ตฌ์š” ๋ถ€๋ชจํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹์ด ์ข…๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ž์‹ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌดํ•œ๋ฃจํ”„์ผ ๊ฑฐ๋‹ˆ๊น...
๋ถ€๋ชจํ”„๋กœ์„ธ์Šค ์ž…์žฅ์—์„œ ์ž์‹์ด ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ์‹ค์ œ๋กœ๋Š” ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒƒ์ด๊ฒ ์ฃ ?
์ด๋•Œ ๋‹ค์‹œ fork๋ฅผ ํ•ด์„œ ์œ„์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
 
์†Œ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.  
 
int main(int argc, char *argv[])
{
        int pid;
        int ret;

        if (( pid = fork()) < 0) {
                fprintf(stderr, "Main Fork Error\n");
                return 0;
        } else if(pid > 0) {
                return 0;
        }

        chdir("/");
        setsid();

        while(1) {
                if (( pid = fork()) < 0) {
                        fprintf(stderr, "Sub Fork Error\n");
                        return 0;
                } else if(pid == 0) {
                        break;
                } else if(pid > 0) {
                        wait(&ret);
                }
        }

        work();

        return 0;
}
 
 
๋งŒ์•ฝ ์ž์‹์ด ์ข…๋ฃŒ๋ ๋•Œ ์ƒํƒœ๋ฅผ ์•Œ๊ณ ์ž ํ•œ๋‹ค๋ฉด wait()ํ•จ์ˆ˜์˜ ์ธ์ž์ธ ret๊ฐ’์„ ์กฐ์‚ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
 
์ž ์ด๋ ‡๊ฒŒ ํ•ด์„œ UNIX/LINUX์—์„œ Daemon๋งŒ๋“ค๊ธฐ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๋งˆ์น˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 
๋ฐ˜์‘ํ˜•

+ Recent posts