라이브러리/IT

JavaScript 운영체제(OS) 확인

THREE™ 2014. 3. 15. 14:26
반응형
operating system 운영 체제

운영 체제(運營體制, 문화어: 조작체계) 또는 오퍼레이팅 시스템(OS, operating system)은 시스템 하드웨어를 관리할뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다. 최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저 위에서 실행되기도 한다.

입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 중재 역할을 한다. 그러나 응용 프로그램 코드는 일반적으로 하드웨어에서 직접 실행된다. 운영 체제는 휴대 전화, 게임기에서부터 슈퍼 컴퓨터, 웹 서버에 이르기까지 컴퓨터를 포함하는 거의 모든 장치에서 볼 수 있다. 운영 체제는 한 면으로는 소비자를, 다른 한 면으로는 프로그램 개발자를 함께 하나의 시장으로 데려다 놓을 수 있는 양면 플랫폼이다. 잘 알려진 현대의 PC 운영 체제에는 마이크로소프트 윈도, 맥 OS X, 리눅스가 있다.[3] 이 밖에 BSD, 유닉스 등의 PC용 운영 체제도 존재한다.

운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사용할 수 있도록 만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 또한 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다.

운영 체제는 컴퓨터 과학의 연구 분야이기도 하다. - <위키>


 

시작하기

제가 이쪽 분야에 대해 초보이다 보니 아직 어색하고 이상하게 코딩이 되는것 같습니다. 물론 제가 쓸려고 만들었지만 점점 더 자료를 모으다 보니 점점 분량이 늘어만 가는군요. 그래도 시작은 했으니 계속 갈 것이지만 아직 많은 부분을 테스트 못했습니다. 이글을 읽는 분들이 조금이나마 테스트를 해 보시고 틀린점이나 보완할점이 있으면 남겨 주시면 감사하겠습니다.

 

System Information

Your machine is currently running:


<script type="text/javascript" src="Osinfo.js"></script>
<P>System Information</P>
<P>Your machine is currently running:
<SCRIPT language=javascript>document.write(OSInfoDev());</SCRIPT>
</P>
<P style="FONT-SIZE: 10px; COLOR: #999">
<SCRIPT language=javascript>document.write(AgentUserOs);</SCRIPT>
</P>

 

Osinfo.js 파일 Js 다운로드 v0.2


// JavaScript Document
// 만든이 : 다섯방울, THREE™ (http://the3.tistory.com)
// 주소 : http://the3.tistory.com/17
// Data : 2015. 01. 28
// Version : 0.2
// 참조 http://www.openspc2.org/userAgent/
// OS 버전 보기

var uanaVigatorOs = navigator.userAgent;
var AgentUserOs= uanaVigatorOs.replace(/ /g,'');
var Ostxt="";
var OSName="";
var OsVers="";

// This script sets OSName variable as follows:
// "Windows"    for all versions of Windows
// "MacOS"      for all versions of Macintosh OS
// "Linux"      for all versions of Linux
// "UNIX"       for all other UNIX flavors 
// "Unknown OS" indicates failure to detect the OS

new function() {
var OsNo = navigator.userAgent.toLowerCase(); 

jQuery.os = {
Linux: /linux/.test(OsNo),
Unix: /x11/.test(OsNo),
Mac: /mac/.test(OsNo),
Windows: /win/.test(OsNo)
}
}

function OSInfoDev(){

if($.os.Windows) {
if(AgentUserOs.indexOf("WindowsCE") != -1) OSName="Windows CE";
else if(AgentUserOs.indexOf("Windows95") != -1) OSName="Windows 95";
else if(AgentUserOs.indexOf("Windows98") != -1) {
if (AgentUserOs.indexOf("Win9x4.90") != -1) OSName="Windows Millennium Edition (Windows Me)" 
else OSName="Windows 98"; 
}
else if(AgentUserOs.indexOf("WindowsNT4.0") != -1) OSName="Microsoft Windows NT 4.0";
else if(AgentUserOs.indexOf("WindowsNT5.0") != -1) OSName="Windows 2000";
else if(AgentUserOs.indexOf("WindowsNT5.01") != -1) OSName="Windows 2000, Service Pack 1 (SP1)";
else if(AgentUserOs.indexOf("WindowsNT5.1") != -1) OSName="Windows XP";
else if(AgentUserOs.indexOf("WindowsNT5.2") != -1) OSName="Windows 2003";
else if(AgentUserOs.indexOf("WindowsNT6.0") != -1) OSName="Windows Vista/Server 2008";
else if(AgentUserOs.indexOf("WindowsNT6.1") != -1) OSName="Windows 7";
else if(AgentUserOs.indexOf("WindowsNT6.2") != -1) OSName="Windows 8";
else if(AgentUserOs.indexOf("WindowsNT6.3") != -1) OSName="Windows 8.1";
else if(AgentUserOs.indexOf("WindowsNT6.4") != -1) OSName="Windows 10";
else if(AgentUserOs.indexOf("WindowsPhone8.0") != -1) OSName="Windows Phone 8.0";
else if(AgentUserOs.indexOf("WindowsPhoneOS7.5") != -1) OSName="Windows Phone OS 7.5";
else if(AgentUserOs.indexOf("Xbox") != -1) OSName="Xbox 360";
else if(AgentUserOs.indexOf("XboxOne") != -1) OSName="Xbox One";
else if(AgentUserOs.indexOf("Win16") != -1) OSName="Windows 3.x";
else if(AgentUserOs.indexOf("ARM") != -1) OSName="Windows RT";
else OSName="Windows (Unknown)";

if(AgentUserOs.indexOf("WOW64") != -1) OsVers=", WOW64";
else if(AgentUserOs.indexOf("Win64;x64;") != -1) OsVers=", Win64 on x64";
else if(AgentUserOs.indexOf("Win16") != -1) OsVers=" 16-bit";
else OsVers=" on x86";

} else if ($.os.Linux) {
if(AgentUserOs.indexOf("Android") != -1) { OSName = getAndroidDevName(); }
else if(AgentUserOs.indexOf("BlackBerry9000") != -1) OSName="BlackBerry9000";
else if(AgentUserOs.indexOf("BlackBerry9300") != -1) OSName="BlackBerry9300";
else if(AgentUserOs.indexOf("BlackBerry9700") != -1) OSName="BlackBerry9700";
else if(AgentUserOs.indexOf("BlackBerry9780") != -1) OSName="BlackBerry9780";
else if(AgentUserOs.indexOf("BlackBerry9900") != -1) OSName="BlackBerry9900";
else if(AgentUserOs.indexOf("BlackBerry;Opera Mini") != -1) OSName="Opera/9.80";
else if(AgentUserOs.indexOf("Symbian/3") != -1) OSName="Symbian OS3";
else if(AgentUserOs.indexOf("SymbianOS/6") != -1) OSName="Symbian OS6";
else if(AgentUserOs.indexOf("SymbianOS/9") != -1) OSName="Symbian OS9";
else if(AgentUserOs.indexOf("Ubuntu") != -1) OSName="Ubuntu";
else if(AgentUserOs.indexOf("PDA") != -1) OSName="PDA";
else if(AgentUserOs.indexOf("NintendoWii") != -1) OSName="Nintendo Wii";	
else if(AgentUserOs.indexOf("PSP") != -1) OSName="PlayStation Portable";
else if(AgentUserOs.indexOf("PS2;") != -1) OSName="PlayStation 2";
else if(AgentUserOs.indexOf("PLAYSTATION3") != -1) OSName="PlayStation 3";	
else OSName="Linux (Unknown)";

if(AgentUserOs.indexOf("x86_64") != -1) OsVers=", x86_64";
else if(AgentUserOs.indexOf("i686") != -1) OsVers=", i686";
else if(AgentUserOs.indexOf("i686 on x86_64") != -1) OsVers=", i686 running on x86_64";		
else if(AgentUserOs.indexOf("armv7l") != -1) OsVers=" Nokia N900 Linux mobile, on the Fennec browser";		
else if(AgentUserOs.indexOf("IA-32") != -1) OsVers=" 32-bit";
else OsVers="";

} else if ($.os.Unix) {
OSName="UNIX";
} else if ($.os.Mac) {
if(AgentUserOs.indexOf("iPhoneOS3") != -1) OSName="iPhone OS 3";
else if(AgentUserOs.indexOf("iPhoneOS4") != -1) OSName="iPhone OS 4";
else if(AgentUserOs.indexOf("iPhoneOS5") != -1) OSName="iPhone OS 5";
else if(AgentUserOs.indexOf("iPhoneOS6") != -1) OSName="iPhone OS 6";
else if(AgentUserOs.indexOf("iPhoneOS7") != -1) OSName="iPhone OS 7";
else if(AgentUserOs.indexOf("iPhoneOS8") != -1) OSName="iPhone OS 8";				
else if(AgentUserOs.indexOf("iPad") != -1) OSName="iPad";
else if((AgentUserOs.indexOf("MacOSX10_1")||AgentUserOs.indexOf("MacOSX10.1")) != -1) OSName="Mac OS X Puma";
else if((AgentUserOs.indexOf("MacOSX10_2")||AgentUserOs.indexOf("MacOSX10.2")) != -1) OSName="Mac OS X Jaguar";
else if((AgentUserOs.indexOf("MacOSX10_3")||AgentUserOs.indexOf("MacOSX10.3")) != -1) OSName="Mac OS X Panther";
else if((AgentUserOs.indexOf("MacOSX10_4")||AgentUserOs.indexOf("MacOSX10.4")) != -1) OSName="Mac OS X Tiger";
else if((AgentUserOs.indexOf("MacOSX10_5")||AgentUserOs.indexOf("MacOSX10.5")) != -1) OSName="Mac OS X Leopard";
else if((AgentUserOs.indexOf("MacOSX10_6")||AgentUserOs.indexOf("MacOSX10.6")) != -1) OSName="Mac OS X Snow Leopard";
else if((AgentUserOs.indexOf("MacOSX10_7")||AgentUserOs.indexOf("MacOSX10.7")) != -1) OSName="Mac OS X Lion";
else if((AgentUserOs.indexOf("MacOSX10_8")||AgentUserOs.indexOf("MacOSX10.8")) != -1) OSName="Mac OS X Mountain Lion";
else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.9")) != -1) OSName="Mac OS X Mavericks";
else if((AgentUserOs.indexOf("MacOSX10_10")||AgentUserOs.indexOf("MacOSX10.10")) != -1) OSName="Mac OS X Yosemite";		
else OSName="MacOS (Unknown)";

if(AgentUserOs.indexOf("Intel") != -1) OsVers=" on Intel x86 or x86_64";
else if(AgentUserOs.indexOf("PPC") != -1) OsVers=" on PowerPC";
else OsVers="";

} else {
OSName="Unknown OS";
}
var OSDev = OSName + OsVers;
return OSDev;
}

// Android의 단말 이름을 반환
function getAndroidDevName() {
var uaAdata = navigator.userAgent;
var regex = /Android (.*);.*;\s*(.*)\sBuild/;
var match = regex.exec(uaAdata);
if(match) {
var ver = match[1];
var dev_name = match[2];
return "Android " + ver + " " + dev_name;
}
return "Android OS";
}

// OSInfoDev() 는 OS이름과 버전 출력하는 함수
// AgentUserOs 는 userAgent 출력

 

기본 테스트화면 모바일 화면

 

 

 

테스트 이력 List

Windows 7 64-bit, Android 4.1.2 LG-F240L | IPhone 5s | Samsung GALAXY Note 4

 

참고 사이트

http://koxo.com/lang/js/property/platform.html

http://www.w3schools.com/js/js_window_navigator.asp

http://msdn.microsoft.com/ko-kr/library/ie/jj819730(v=vs.85).aspx

http://www.openspc2.org/userAgent/