was vs webserver

Web/Common 2011. 12. 13. 21:00


※Web Server와 WAS와 차이※

- Web Server 의 정의
Web Client(웹 브라우저)에게 컨텐츠를 제공하는 서버, 정적인 HTML이나 jpeg, gif 같은 이미지를 HTTP 프로토콜을 통해 웹 브라우저에게 전송하는 역할

- WAS(Web Application Server)의 정의 
○ Server 단에서 Application을 동작할 수 있도록 지원함 => Jeus
○ 기존 웹 서버와 달리 동적인 요구에 대응하기 위해 적합한 형태로 변화, 
    Web Client(브라우저)에게는 결과값만 전송함.
○ Container(컨테이너)라는 용어로 쓰이며, 초창기는 CGI, 그 후에서는 Servlet, 
    , JSP, ASP 등의 프로그램으로 사용됨

- Web Server와 WAS의 구성에 따른 분류
○ WAS와 WebServer를 분리하지 않는 경우  
모든 컨텐츠를 한곳에 집중시켜 웹서버와 WAS의 역할을 동시에 수행, 스위치를 통한 로드 밸러싱, 사용자가 적을 경우 효율적
  
○  WAS와 WebServer를 분리한 경우 
웹서버와 WAS의 기능적 분류를 통해 효과적인 분산을 유도, 정적인 데이터는 웹서버에서 처리, 동적인 데이터는 WAS가 처리
 
○  WAS 여러개와 WebServer를 분리한 경우
WAS단을 프리젠테이션 로직와 비즈니스 로직으로 구분하여 구성, 특정 logic의 부하에 따라 적절한 대응할 수 있지만 설계단계 유지보수 단계가 복잡해 질 수가 있다. 


 WAS 와 Web Server 종류

○ WAS 종류
tomcat, tMax jeus, BEA Web Logic, IBM Webspere, JBOSS,Bluestone, Gemston, inprise, Oracle, PowerTier,Apptivity, silverStream

○ Web Server  
IIS, apache, tMax, WebtoB

- tomcat
아파치 소프트웨어 재단의 애플리케이션 서버로서, 자바 서블릿을 실행시키고 JSP 코드가 포함되어 있는 웹페이지를 만들 어준다. 
자바 서블릿과 JSP 규격 '참조용 구현'으로 평가되고 있는 톰캣은, 개발자들의 개방적 협력 작업의 산물로 바이너리 버전과 코어버전 둘  모두를 아파치 웹사이트에서 얻을 수 있다. 톰캣은 자체적으로 보유하고 있는 내부 웹서버와 함께 독립적으로 사용 될 수도 있지만 아파치나 넷스케이프 엔터프라이즈 서버, IIS, 마이크로소프트의 PWS 등 다른 웹서버와 함께 사용할 수도 있다. 
톰캣을 실행시키기 위해서는 jre  1.1  이상에 부합되는 자바 런타입 환경이 필요하다.

'Web > Common' 카테고리의 다른 글

웹 서비스(Web Service)  (0) 2012.01.16
Sun ONE  (0) 2012.01.13
HTTP1.0과 1.1 차이점  (0) 2011.12.29
HTTP  (0) 2011.12.29
[2012년, HTML5 혁명 온다] <상> 모바일 생태계 지각변동  (0) 2011.12.26
Posted by linuxism
,

To the kernel, all open files are referred to by file descriptors. A file descriptor is a
non-negative integer. When we open an existing file or create a new file, the kernel
returns a file descriptor to the process. When we want to read or write a file, we
identify the file with the file descriptor that was returned by open or creat as an
argument to either read or write.


source - Advanced Programming in the UNIX Environment Third Edition

 File Handle)|작성자 kaka

 
 







In Unix and related computers operating systems, a file descriptor (FD, less frequently fildes) is an abstract indicator used to access a file or other input/output resource, such as a pipe or network connection. File descriptors are part of the POSIX application programming interface. A file descriptor is a non-negative integer, represented in C programming language as the type int

There are three standard POSIX file descriptors, corresponding to the three standard streams, which presumably every process (save perhaps a daemon) should expect to have:

Integer valueName<unistd.h> symbolic constant[1]<stdio.h> file stream[2]
0Standard inputSTDIN_FILENOstdin
1Standard outputSTDOUT_FILENOstdout
2Standard errorSTDERR_FILENOstderr

Overview[edit]

File descriptors for a single process, file table andinode table. Note that multiple file descriptors can refer to the same file table entry (e.g., as a result of the dup system call)[3]:104 and that multiple file table entries can in turn refer to the same inode (if it has been opened multiple times; the table is still simplified because it represents inodes by file names, even though an inode can have multiple names). File descriptor 3 does not refer to anything in the file table, signifying that it has been closed.

In the traditional implementation of Unix, file descriptors index into a per-process file descriptor table maintained by the kernel, that in turn indexes into a system-wide table of files opened by all processes, called the file table. This table records the mode with which the file (or other resource) has been opened: for reading, writing, appending, reading and writing, and possibly other modes. It also indexes into a third table called the inode table that describes the actual underlying files.[3]To perform input or output, the process passes the file descriptor to the kernel through a system call, and the kernel will access the file on behalf of the process. The process does not have direct access to the file or inode tables.

On Linux, the set of file descriptors open in a process can be accessed under the path /proc/PID/fd/, where PID is the process identifier.

In Unix-like systems, file descriptors can refer to any Unix file type named in a file system. As well as regular files, this includes directoriesblock and character devices(also called "special files"), Unix domain sockets, and named pipes. File descriptors can also refer to other objects that do not normally exist in the file system, such asanonymous pipes and network sockets.

The FILE data structure in the C standard I/O library usually includes a low level file descriptor for the object in question on Unix-like systems. The overall data structure provides additional abstraction and is instead known as a file handle.

Operations on file descriptors[edit]

The following lists typical operations on file descriptors on modern Unix-like systems. Some of these functions are declared in the <fcntl.h> header.

Creating file descriptors[edit]

  • open()
  • creat()
  • socket()
  • accept()
  • socketpair()
  • pipe()
  • opendir()

Deriving file descriptors[edit]

  • dirfd()
  • fileno()

Operations on a single file descriptor[edit]

  • read(), write()
  • readv(), writev()
  • pread(), pwrite()
  • recv(), send()
  • recvmsg(), sendmsg() (including allowing sending FDs)
  • sendfile()
  • lseek()
  • fstat()
  • fchmod()
  • fchown()
  • fdopen()
  • ftruncate()
  • fsync()
  • fdatasync()
  • fstatvfs()

Operations on multiple file descriptors[edit]

Operations on the file descriptor table[edit]

The fcntl() function is used to perform various operations on a file descriptor, depending on the command argument passed to it. There are commands to get and set attributes associated with a file descriptor, including F_GETFD, F_SETFD, F_GETFL and F_SETFL.

  • close()
  • closefrom() (BSD and Solaris only; deletes all file descriptors greater than or equal to specified number)
  • dup() (duplicates an existing file descriptor guaranteeing to be the lowest number available file descriptor)
  • dup2() (the new file descriptor will have the value passed as an argument)
  • fcntl (F_DUPFD)

Operations that modify process state[edit]

  • fchdir() (sets the process's current working directory based on a directory file descriptor)
  • mmap() (maps ranges of a file into the process's address space)

File locking[edit]

  • flock()
  • fcntl (F_GETLK, F_SETLK and F_SETLKW)
  • lockf()

Sockets[edit]

  • connect()
  • bind()
  • listen()
  • accept() (creates a new file descriptor for an incoming connection)
  • getsockname()
  • getpeername()
  • getsockopt()
  • setsockopt()
  • shutdown() (shuts down one or both halves of a full duplex connection)

Miscellaneous[edit]

  • ioctl() (a large collection of miscellaneous operations on a single file descriptor, often associated with a device)

Upcoming operations[edit]

A series of new operations on file descriptors has been added to many modern Unix-like systems, as well as numerous C libraries, to be standardized in a future version of POSIX.[4] The at suffix signifies that the function takes an additional first argument supplying a file descriptor from which relative paths are resolved, the forms lacking the at suffix thus becoming equivalent to passing a file descriptor corresponding to the current working directory. The purpose of these new operations is to defend against a certain class of TOCTTOU attacks.

  • openat()
  • faccessat()
  • fchmodat()
  • fchownat()
  • fstatat()
  • futimesat()
  • linkat()
  • mkdirat()
  • mknodat()
  • readlinkat()
  • renameat()
  • symlinkat()
  • unlinkat()
  • mkfifoat()
  • fdopendir()

File descriptors as capabilities[edit]

Unix file descriptors behave in many ways as capabilities. They can be passed between processes across Unix domain sockets using the sendmsg() system call. Note, however, that what is actually passed is a reference to an "open file description" that has mutable state (the file offset, and the file status and access flags). This complicates the secure use of file descriptors as capabilities, since when programs share access to the same open file description, they can interfere with each other's use of it by changing its offset or whether it is blocking or non-blocking, for example.[5][6] In operating systems that are specifically designed as capability systems, there is very rarely any mutable state associated with a capability itself.

A Unix process' file descriptor table is an example of a C-list.

See also[edit]

  • lsof - a utility that displays information about open file descriptors.
  • Fuser (Unix) - a utility that show which processes are using a specified file or file systems.

References[edit]

  1. Jump up^ "The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition".
  2. Jump up^ The IEEE and The Open Group. "<stdio.h>". The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition. Retrieved May 31, 2014.
  3. Jump up to:a b Bach, Maurice J. (1986). The Design of the UNIX Operating System. Prentice Hall. pp. 92–96.
  4. Jump up^ Extended API Set, Part 2. The Open Group. October 2006. ISBN 1-931624-67-4.
  5. Jump up^ [1]
  6. Jump up^ Jonathan de Boyne Pollard (2007). "Don't set shared file descriptors to non-blocking I/O mode."Frequently Given Answers.




source - https://en.wikipedia.org/wiki/File_descriptor

'System > Common' 카테고리의 다른 글

디바이스 파일  (0) 2011.12.15
i-node & Directory  (0) 2011.12.15
Character Device File vs Block Device File  (0) 2011.12.08
심볼릭 링크 vs 하드링크  (0) 2011.12.08
RPC 구현  (0) 2011.12.07
Posted by linuxism
,

사용자 삽입 이미지


전기를 증폭해주는 트랜지스터는 벨 연구소에서 윌리엄 쇼클리의 책임 아래 존 바든 그리고 윌터 브래튼에 의해서 발명되었다. 트랜지스터는 0과 1의 전기적 신호를 받아내기 때문에 라디오나 마이크 뿐만 아니라 CPU에서도 중요한 역할을 한다. 그래서 트랜지스터의 발명은 디지털 시대의 시작으로 평가받을 정도로 중요한 사건이다. 이런 중요한 발명품인 만큼 트랜지스터개발에 관여한 세사람은 모두 노벨상 물리학상을 수상할 수 있었다. 그런데 노벨 물리학상을 받은 후 윌리엄 쇼클리는 회사의 처우에 불만을 품고 사직서를 제출한다. 좀더 상업적인 성공을 거둘 수 있는 상업적인 프로젝트를 직접 진행하고 싶었다. 이 소식을 들은 스탠포드 대학의 프레드릭 터먼은 윌리엄 쇼클리를 스탠포드 대학의 교수를 스카우트 해온다.  윌리엄 쇼클리는 사람들을 모아서 트랜지스터를 대량생산하는 방법을 연구하기 시작한다. 그런데 윌리엄 쇼클리는 실패를 반복하였고 툭하면 직원들에게 화풀이를 하였다. 윌리엄쇼클리의 행동들에 인간적으로 화가났던 8명의 직원이 동시에 사표를 쓰고 회사를 나간다. 이에 격분한 윌리엄 쇼크리는 이들을 8인의 배신자라면서 평생토록 미워했다. 

8인의 배신자는 페어차일드 그룹에서 150만달러의 투자금을 받고 페어차일드 반도체를 창업한다. 그리고 8인의 배신자들은 실리콘 소재를 사용한 트랜지스터를 개발하는데 성공한다. 이는 그 동안 불가능했던 트랜스터의 대량생산이 가능해졌음을 의미하였고 8인의 배신자가 당시 최고의 기술력을 가졌음을 증명해주는 사건이었다. 그 후 페어차일드는 시대의 기술 선도하면서 승승장구했다. 하지만 페어차일드 그룹은 8인의 멤버들을 제대로 대우해주지도 않았고 회사 본사 사람들을 낙하산식으로 페어차일드 반도체에 보냈다. 이에 불만을 느낀 8인의 배신자들은 하나 둘씩 회사를 그만두었다. 멤버중 리더 역할을 한 로버트 노이스와 고든 무어만이 최후까지 페어차일드 반도체에서 일을 했다. 하지만 페어차일든 본사에서 보낸 사장과의 불화가 커지면서 로버트 노이스는 회사를 그만둘 결심을 한다.  회사를 그만둔 로버트 노이스는 고든무어에게 함께 회사를 창업하자고 제안한다. 원래부터 단짝사이였던 고든무어는 로버트 노이스의 제안을 혼쾌히 받아들인다. 그리고 페어차일드 그룹과 연결시켜준 뉴욕의 금융가인 아서록에게 투자자를 모집해달라고 부탁한다.  로버트 노이스와 고든무어가 새로운 사업을 한다고 하자 미국 전역에서 투자자들이 줄을 섰다. 로버트 노이스와 고든 무어는 그 동안의 여러 실적 덕분에 반도체 분야에서 슈퍼스타와 같은 존재였다. 둘이 작성한 사업 계획서라고 해봐야 냅프킨에 적어둔 메모밖에 없음에도 불과하고 단 하루만에 250만달러나 되는 돈을 투자 받을 수 있었다.  또한 로버트 노이스와 고든무어가 새로운 사업을 시작한다고 하자 언론에 대서특필될 정도로 그 둘은 업계에서는 유명인사였다. 

처음 로버트 노이스와 고든무어는 회사이름을 자신들의 이름을 따서 노이스-무어 일렉트로닉스(Noyce-Moore Electronics)로 정했다. 하지만 노이즈가 많다(Noise Moore)라는 소리로 들린다는 의견에 따라서 통합을 뜻하는 Integrate와 전자를 의미하는 Electronics 두 단어를 조합해서 회사이름을 인텔(INTEL)이라고 결정한다. 인텔의 첫번째 직원은 앤디 그로브이다. 앤디 그로브는 페어차일드 반도체에서 출중한 실력을 명성을 드높였던 직원이었다.

로버트 노이스와 고든 무어 그리고 앤디 그로브는 완벽한 삼두체제를 이루며 인텔의 성공을 이끌었다. 로버트 노이스는 하나의 기판에 여러 개의 트랜지스터를 집적하는 기술에 있어서는 최고의 권위자였다. 그는 이런 기술을 바탕으로 하여 지금까지 없었던 제품을 개발하려했다. 이러한 고민끝에 등장한 제품이 바로 메모리이다. 로버트 노이스가 인텔이 만들어야 할 제품에 대한 비전을 제시했다면 실제의 시제품으로 만드는 과정에는 고든무어였다. 로버트 노이스는 설계를 그렸다면 이를 구현한건 고든무어였던 것이다. 

우리가 CPU 전문 회사로 알고 있는 인텔이지만 사실 인텔의 시작은 메모리회사였다. 그런데 메모리의 가장 큰 문제는 역시 대량생산이었다. 시제품을 만들었지만 대량 생산 과정에서 번번히 좌절되었다. 이때 활약한 사람이 바로 앤디 그로브였다. 1969년 첫번째 메모리가 개발됐지만 실제 대량생산에 들어간 것은 1970년이었다. 앤디 그로브는 공장의 모든 설비를 직접 셋팅하였고 공장에서 일하는 사람들을 뽑고 교육을 시켰다. 초기 메모리의 양산율은 10% 밖에 안되었다. 10개를 만들면 9개가 불량품이었는데 이를 개선시키기 위해서 앤디그로브는 자신의 모든 노력을 기울렸고 나중에는 성공률을 50%로 끌어 올렸다. 이때 앤디그로브는 먼지가 반도체 생산에 치명적이라는 사실을 밝혀내고 미세먼지를 최소화하기 위한 방진복을 최초로 고안한다. 인텔의 광고를 보면 방진복을 입은 사람들이 나타나 춤을 추는데 이와 같이 방진복은 어느덧 인텔의 상징이 되었다. 사람들은 보통 인텔의 창업자를 로버트노이스와 고든무어로 알고 있지만 앤디 그로브 역시 창업자 대우를 해준다. 앤디 그로브는 그 자신 스스로 창업자라고 생각하고 있으며 만약 자신을 제외하고 창업자를 이야기하면 화를 낼 정도다. 

로버트 노이스와 고든무어 그리고 앤디그로브의 활약 덕분에 인텔은 주식시장에 상장된 후 어마어마한 부자가 되면서 벤처 신화를 완성한다. 인텔이 실리콘 밸리에 끼친 영향은 절대적이다. 실리콘 밸리라는 단어 자체가 사실은 8인의 배신자들을 취재하던 돈 회플러가 탄생시킨 말이다. 특히 8인의 배신자들의 리더는 인텔의 창업자인 로버트 노이스였다. 그래서 로버트 노이스는 실리콘 밸리의 시장이라는 별칭을 얻고 있다. 재미있는 사실은 로버트 노이스가 현재 인텔에게 숙명의 라이벌인 AMD의 탄생에 절대적인 공헌을 했다는 점이다. 페어차일드 반도체에서 독립한 제리 샌더스와 동료들은 AMD를 창업하기 위해 투자자를 모집하지만 인텔과 다르게 투자를 받지 못했다. 이에 안타까움을 느낀 로버트 노이스는 전 직장의 동료들에게 도움을 주고자 일부러 AMD에 자금을 투자한다. 업계의 슈퍼스타인 로버트 노이스가 투자를 한다고 하자 이 소식이 빠르게 외부에 알려졌고 덕분에 AMD는 쉽게 창업자금을 투자 받을 수 있게 된다. 현재는 AMD와 인텔은 숙명의 라이벌이지만 이 사건은 인텔이 실리콘 밸리에 얼마나 큰 영향을 끼쳤는지를 보여주는 좋은 사례다.

출처 - http://playthepc.com/tag/로버트%20노이스 
Posted by linuxism
,