KR101660072B1 - 전자 노트북에서의 공유 작업 스케줄링 - Google Patents

전자 노트북에서의 공유 작업 스케줄링 Download PDF

Info

Publication number
KR101660072B1
KR101660072B1 KR1020117025654A KR20117025654A KR101660072B1 KR 101660072 B1 KR101660072 B1 KR 101660072B1 KR 1020117025654 A KR1020117025654 A KR 1020117025654A KR 20117025654 A KR20117025654 A KR 20117025654A KR 101660072 B1 KR101660072 B1 KR 101660072B1
Authority
KR
South Korea
Prior art keywords
notebook
file
shared
computer
information
Prior art date
Application number
KR1020117025654A
Other languages
English (en)
Other versions
KR20120017414A (ko
Inventor
나타니엘 엠 마이어
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20120017414A publication Critical patent/KR20120017414A/ko
Application granted granted Critical
Publication of KR101660072B1 publication Critical patent/KR101660072B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

어떤 작업을 공유 노트북에 동기시켜 사용자 개입 필요성을 없애고 노트북 클라이언트의 오직 한 인스턴스만이 작업을 수행하도록 보장하는 구조. 작업 추적 컴포넌트가 공유 노트북 정보에 대해 프로세싱된 작업들의 추적 정보를 생성 및 관리한다. 스케줄링 컴포넌트는 추적 정보에 기초해 공유 노트북 정보에 대해 새 작업을 동기시킨다. 추적 정보는 전자 노트북을 나타내는 계층적 데이터 콜렉션의 루트 레벨에 저장되는 파일 또는 셀들일 수 있다. 파일은 프로세싱되었던 작업에 관한 특성들을 포함한다. 특성들은 새 작업들이 프로세싱되면서 업데이트된다. 작업 스케줄링은 공유 노트북 정보에 대한 점증적 업데이트 및/또는 전체 파일 업데이트를 포함한다.

Description

전자 노트북에서의 공유 작업 스케줄링{SHARED JOB SCHEDULING IN ELECTRONIC NOTEBOOK}
전자 버추얼 노트북은 여러 사용자가 동시 발생적으로 열고 편집할 수 있도록 공유될 수 있다. 작업을 주기적으로 실행시킴으로써 이득이 되는 공유 노트북의 특징들이 존재한다. 이러한 태스크들, 혹은 작업들은 공유 노트북이 열려 있는 상태에서 보통 단 하나의 클라이언트나 장치에 의해 단 한 번 실행될 필요가 있다. 몇몇 경우에, 둘 이상의 사람이나 인스턴스가 동일한 작업을 수행하려고 시도하게 하는 것은 예상치 못한 결과나 데이터 훼손 가능성으로 이어질 수 있다.
주기적 작업 실행을 활용하는 특징의 예가 노트북의 HTML 보기(view)이다. 노트북 클라이언트가 설치되게 하지 않지만 웹 브라우저를 통해 노트북을 액세스하는 사용자들에 관해서는, 그 사용자들은 노트북 콘텐츠에 대해 읽기만 가능한 HTML 보기를 원할 수 있다. 그 HTML 보기가 어떤 값을 가지도록 하기 위해, 그 보기는 주기적으로, 그리고 변화가 있다면 빈번하게, 그러나 노트북 프로그램이 열려 있는 상태에서 한 클라이언트에 의해서만 업데이트되어야 한다. 또한, 그 노트북 프로그램을 실행하는 어느 사용자가 작업을 수행해야 할지에 대한 결정은 자동적인 것이어야 하며 사용자 개입이나 입력 없이 수행되어야 한다.
이하의 설명은 여기에 기술되는 일부 신규한 실시예들에 대한 기본적 이해를 제공하기 위해 간략한 요약을 제공한다. 이 요약은 넓은 의미의 개괄이 아니고, 핵심적인/주요 구성요소들을 식별하거나 그 범위를 정확히 규정하고자 의도된 것이 아니다. 요약의 유일한 목적은 후에 제시되는 보다 상세한 설명에 대한 준비로서 일부 개념들을 간략한 형식으로 제시하고자 하는 것이다.
개시된 구조는 어떤 태스크나 작업이 공유 노트북에 대해 공개될 수 있으며 오직 한 노트북 클라이언트 인스턴스에 의해서만 동기가 행해짐으로써, 사용자 개입의 필요성을 없애고 오직 한 노트북 클라이언트의 인스턴스만이 작업을 수행하도록 보장할 수 있는 기법이다.
상기 구조는 공유 노트북 정보에 대해 프로세싱되는 작업들에 대한 추적 정보를 생성 및 관리하기 위한 공유 전자 노트북 관련 작업 추적 컴포넌트, 및 추적 정보에 기반하여 공유 노트북 정보에 대해, 클라이언트 인스턴스에 의한 새 작업을 동기시키기 위한 스케줄링 컴포넌트를 포함할 수 있다. 클라이언트 인스턴스는 공유 전자 노트북과 상호동작할 수 있거나 상호동작하고 있는 여러 클라이언트 인스턴스들 중 하나일 수 있다.
추적 정보는 계층적 데이터 콜렉션의 루트(root) 레벨에 저장되는 파일일 수 있으며, 여기서 계층적 데이터 콜렉션은 전자 노트북을 나타낸다. 파일은 프로세싱되었던 작업과 관련된 특성들을 포함한다. 특성들은 새 작업들이 프로세싱될 때 업데이트된다. 작업 스케줄링은 공유 노트북 정보에 대한 점증적 업데이트 및/또는 전체 파일 업데이트를 포함한다.
상기 구조는 전자 노트북을 지원하는 어떠한 저장 메커니즘에라도 적용될 수 있으며, 또한 어떤 사용자들의 수에 맞춰 증감된다. 사용자 상호동작은 전혀 필요로되지 않으며, 프로세싱은 배경에서 일어난다.
상기 관련 목적을 달성하기 위해, 소정의 예시적 양태들이 이하의 설명 및 첨부된 도면과 관련하여 여기에 기술된다. 이 양태들은 여기 개시된 원리들이 실시되는 다양한 방식들을 나타내며, 모든 양태들 및 그와 균등한 것들은 청구된 주제의 범위 안에 들어오는 것으로서 의도된다. 다른 이점들 및 신규한 특징들이 도면과 연계하여 고려될 때 이하의 상세한 설명으로부터 자명하게 될 것이다.
도 1은 개시된 구조에 따라 컴퓨터 구현된 작업 스케줄링 시스템을 예시한다.
도 2는 작업 스케줄링 시스템의 다른 대안적 실시예를 예시한다.
도 3은 작업 스케줄링을 위한 공유 버추얼 전자 노트북 구조의 예에 대한 시각적 내용을 예시한다.
도 4는 개시된 구조의 일 실시예에 따른 전체 파일 노트북 작업 스케줄링 시스템을 예시한다.
도 5는 개시된 구조의 일 실시예에 따른 셀 기반 전자 노트북 작업 스케줄링 시스템을 예시한다.
도 6은 작업 스케줄링 방법을 예시한다.
도 7은 도 6의 방법의 추가적 양태들을 예시한다.
도 8은 전체 파일 작업들을 위한 작업 스케줄링 및 실행을 나타내는 상태도를 예시한다.
도 9는 리비전(revision) 작업들을 위한 작업 스케줄링 및 실행을 나타내는 상태도를 예시한다.
도 10은 개시된 구조에 따라, 전자 노트북들에 대한 작업을 실행하도록 동작되는 컴퓨팅 시스템의 블록도를 예시한다.
도 11은 버추얼 전자 노트북 작업 스케줄링 및 동기화를 위한 컴퓨팅 환경의 개략적 블록도를 예시한다.
개시된 구조는 많은 노트북 클라이언들이 클라이언트들간 직접적인 통신이나 조정 없이 공유 가능한 전자 노트북에 대해 스케줄링된 작업을 실행할 수 있게 한다. 기입 가능한 파일(추적 정보라고도 칭함)이 공유 가능 노트북과 관련하여 위치되며, 어떤 노트북 클라이언트라도 상기 노트북에 대한 동기화 중에 파일에 대해 보장된 원자적 락(atomic lock)을 취할 수 있다. 파일은 특성들을 노트북 내 루트에 저장할 수 있으며, 클라이언트 인스턴스들의 작업들을 동기화시키는 데 사용된다. 특성들은 작업의 마지막 실행 시간(가령, UTC(coordinated universal time)) 및 요망될 수 있는 다른 특성들을 포함할 수 있다.
지금부터 도면을 참조할 것이며, 도면에서 유사 참조 부호는 전체를 통해 유사 구성요소를 나타내는데 사용된다. 이하의 내용에서는 설명의 목적으로, 철저한 이해를 제공하기 위한 수많은 구체적인 세부 사항들이 언급된다. 그러나, 신규한 실시예들은 그 구체적인 세부 사항들 없이도 실시될 수 있다는 것이 자명할 것이다. 다른 경우에 있어서, 잘 알려져 있는 구조와 장치는 그 기술을 돕기 위해 블록도의 형식으로 보여진다. 그 의도는 청구된 주제의 개념과 범위 안에 들어오는 모든 수정물, 균등물, 및 대안물을 포괄하고자 하는 데 있다.
도 1은 개시된 구조에 따른 컴퓨터 구현 작업 스케줄링 시스템(100)을 예시한다. 시스템(100)은 공유 노트북 정보(110)에 대해 프로세싱되는 작업들(108)에 대한 추적 정보(106)를 생성 및 관리하기 위한 공유 전자 노트북 관련 작업 추적 컴포넌트(102)를 포함한다. 시스템(100)은 또한 추적 정보(106)에 기반하여 공유 노트북 정보(110)에 대해, 클라이언트 인스턴스(116)에 의한 새 작업(114)을 동기시키기 위한 스케줄링 컴포넌트(112)를 포함할 수 있다. 클라이언트 인스턴스(116)는 공유 전자 노트북(104)과 상호동작할 수 있거나 상호동작하고 있는 여러 클라이언트 인스턴스들(118) 중 하나일 수 있다.
추적 정보(106)는 계층적 데이터 콜렉션의 루트(root) 레벨에 저장되는 파일일 수 있으며, 여기서 계층적 데이터 콜렉션은 노트북을 나타낸다. 파일은 프로세싱된 작업과 관련된 특성들을 포함한다. 특성들은 새 작업들이 프로세싱될 때 업데이트된다. 스케줄링 컴포넌트(112)가 클라이언트 인스턴스(116)로부터 새 작업을 공유 노트북 정보(110)에 동기시킬 때 클라이언트 인스턴스(116)는 공유 노트북 정보(110)에 대한 원자적 락(atomic lock)을 획득한다. 새 작업은 노트북의 전체 파일을 다루는 전체 파일 작업일 수 있거나, 아니면 새 작업은 동기를 위해 파일의 데이터 중 일부만이 다뤄지도록 하는 점증적 작업에 해당한다.
전자 노트북은 파일 시스템의 파일 및 디렉토리와 유사한 파일 및 디렉토리의 콜렉션으로서 기술될 수 있다. 전체 파일 메커니즘으로서, 노트북들이 전체 파일들로서 저장된다. 노트북의 한 섹션은 한 파일로 매핑되며, 그 파일은 변화가 있을 때마다 변화의 사이즈와 무관하게 전체 파일로서 액세스된다. 전체 파일 노트북은 노트북 섹션을 파일로 매핑하고 노트북 폴더를 디렉토리로 매핑한다. 루트 디렉토리는 노트북의 최상부(top)이다. 이하에서 전자 기기의 보기 및, 파일과 디렉토리의 노트북 콜렉션이 어떻게 파일 시스템으로 변환되는지에 대한 시각적 서술이 주어진다.
방해될 수 없는 한 번의 동작으로 노트북 전체 파일로의 액세스가 얻어지는 원자적 파일 락(atomic file lock)이 프로세싱된다. 전체 파일 락이 얻어지면, 노트북 클라이언트 인스턴스는 다른 클라이언트가 락을 가진 동안 다른 모든 클라이언트 인스턴스들이 액세스를 거부 당하는 전체 파일로의 예외적 액세스를 가지도록 보장된다.
도 2는 작업 스케줄링 시스템(200)의 대안적 실시예를 예시한다. 시스템(200)은 점증적 업데이트 컴포넌트(202)의 구현을 통해 클라이언트 노트북 데이터(작업들)의 점증적 동기를 도모하는 것을 포함한다. 작업들(108)은 이때 여기 기술되는 전체적 파일 업데이트가 아닌 한 업데이트에서 다른 업데이트로의 변화사항들(또는 델타 변화사항들)뿐일 수 있다.
시스템(200)은 또한 공유 노트북 정보(110)에 대해 프로세싱되는 작업들(108)(현재 점증적 업데이트들)에 대한 추적 정보(106)를 생성 및 관리하기 위한 공유 전자 노트북(104) 관련 작업 추적 컴포넌트(102)를 포함할 수 있다. 시스템(200)은 또, 추적 정보(106)에 기반하여 공유 노트북 정보(110)에 대해, 클라이언트 인스턴스(116)에 의한 새 작업(114)(현재 새로운 점증적 업데이트)을 동기시키기 위한 스케줄링 컴포넌트(112)도 포함한다. 클라이언트 인스턴스(116)는 공유 전자 노트북(104)과 상호동작할 수 있거나 상호동작하고 있는 여러 클라이언트 인스턴스들(118) 중 하나일 수 있다.
앞에서와 같이, 추적 정보(106)는 계층적 데이터 콜렉션의 루트(root) 레벨에 저장되는 파일일 수 있고, 여기서 계층적 데이터 콜렉션은 노트북(104)을 나타낸다. 추적 정보(106)는 점증적 실시예에 있어서 프로세싱된 작업들과 관련된 특성들을 포함한다. 추적 정보(106)의 특성들은 새 작업들이 프로세싱되면서 업데이트된다.
작업들은 사용자가 수행한 모든 변경에 대해 전체 파일 대신 어떤 점증 가능(increment-capable) 서버로의 어느 한 파일의 점증적 업데이트(리비전(revision)이라고도 칭함)가 된다. 예를 들어, 어느 텍스트 문서에 있는 한 글자를 변경하여 어떤 협업(collaboration) 서버에 저장한 경우, 그 전체 텍스트 문서가 전체 파일 구현시 업로드되어야 할 것이다. 반대로, 점증 호환성(increment-compatible) 서버는 변경(들)이 이뤄졌다는 것을 서술하는 데이터의 소형 패킷만을 수용한다. 클라이언트들은 전체 파일 구현시 기술되는 원자적 파일 락을 사용하지 않는다.
리비전은 소량의 문서 편집이 이뤄질 때 전체 파일 대신 보내지는 변경사항의 패킷을 기술하는데 사용된다. 셀의 모든 리비전들이 함께 그룹화될 때 페이지나 섹션을 구성한다. 셀은 자체적으로 뜻이 통하는 문서의 일부이다. 예를 들어, 최소 단위가 섹션(파일에 해당)인 전체 파일 노트북과는 달리, 셀에 해당하는 최소 단위는 페이지가 될 수 있다.
다르게 말하면, 작업 스케줄링 시스템(200)은 공유 노트북 정보(110)에 대해 프로세싱되는 작업에 대한 추적 정보(106)를 생성 및 관리하기 위한 공유 전자 노트북(104) 관련 작업 추적 컴포넌트(102)를 포함한다. 추적 정보(106)는 노트북(104)을 나타내는 계층적 데이터 콜렉션의 루트 레벨에서 저장되고, 추적 정보(106)는 처리되었던 작업과 관련된 특성들을 포함한다. 시스템(200)은 또한, 추적 정보(106)에 기반하여 클라이언트 인스턴스(116)로부터 새 작업(114)을 공유 노트북 정보(110)에 동기시키기 위한 스케줄링 컴포넌트(112)도 포함하고, 추적 정보(106)는 새 작업(114)의 마지막 실행 시간 정보를 포함한다.
새 작업(114)은 전체 파일 작업일 수 있고, 클라이언트 인스턴스(116)는 스케줄링 컴포넌트(112)가 그 전체 파일 작업을 공유 노트북 정보(110)에 동기시킬 때 공유 노트북 정보(110)에 대한 파일 락을 획득한다. 스케줄링 컴포넌트(112)는 동시 발생적인 실행에 대한 클라이언트 인스턴스들의 시도를 완화시키기 위해 임의적 여분(random extra) 시간을 새 작업(114)에 추가한다.
시스템(200)은 새 작업(114)을 공유 노트북 정보(110)에 대한 점증적 업데이트로서 수신하는 점증적 업데이트 컴포넌트(202)를 더 포함할 수 있다. 새 작업은 변경된 데이터에만 관련된 변경사항들의 패킷이다.
도 3은 작업 스케줄링에 대한 공유 버추얼 전자 노트북 구조의 예의 시각적 내용(300)을 예시한다. 버추얼 전자 노트북은 바로 파일 시스템의 파일과 디렉토리처럼 파일과 디렉토리의 콜렉션을 포함한다. 전체 파일 노트북은 노트북 섹션을 파일에 매핑하고 노트북 폴더를 디렉토리에 매핑한다. 루트 디렉토리는 노트북의 최상부에 해당한다. 시각적 내용(300)은 노트북 사용자 인터페이스 보기(302)의 한 예와 그 보기(302)가 아래의 파일 시스템(304) 내 파일과 폴더로 어떻게 변환하는지를 보인다. 보기(302)는 회의 노트(Meeting Notes), 프로젝트 A(Project A), 프로젝트 B, 연구(Research), 및 폴더(folder)를 구비하는 워크(work) 노트북을 포함하는 노트북들을 보인다. 폴더는 여행(Travel), 계획(Planning), 및 기타사항(Miscellaneous)으로 명명된 노트북 파일들을 포함하도록 부연된다.
다만 서술의 목적으로, 추적 정보가 루트 레벨에서 시스템 파일 리스트 내 job_token file로서 포함된다. 개시된 구조는 특성들을 저장한 파일을 노트북의 루트 레벨에 놓는다. job_token file은 작업들을 동기시키고, 그 특성들을 이용해 그 작업의 마지막 실행 시간(가령, UTC) 및 기타 요망될 수 있는 특성들을 또한 추적하는데 사용된다.
전체 파일 구현예들에 있어서, 클라이언트 인스턴스가 동기가 일어날 때 인터럽트할 수 없는 원자적 파일 락을 job_token file에 대해 둔다. 일단 얻어졌으면, 클라이언트 인스턴스는 예외적 액세스 허용을 보장 받는다.
개시된 구조는 여러 노트북 클라이언트들에게 클라이언트들 간 직접적 통신이나 조정 없이 공유 노트북에 대하여 스케줄링된 작업들을 실행할 능력을 제공한다.
도 4는 개시된 구조의 일 실시예에 따른 전체 파일 노트북 작업 스케줄링 시스템(400)을 예시한다. 시스템(400)은 공유 노트북(104)과 상호 동작하기 위해 클라이언트 기반의 운영 시스템(402)을 통해 동작하는 노트북 클라이언트 인스턴스(116)를 포함한다.
공유 노트북(104)은 두 개의 섹션 파일들(404)을 포함하는 것으로 표현되어 있지만, 다른 파일들 및 폴더들이 사용될 수도 있다. 또, 추적 정보 파일(406)(job_token file로 표기됨)이 생성되어 공유 노트북 파일들(404)의 루트 레벨 상에 저장 및 관리될 수 있다. 예시된 바와 같이, 공유 노트북(104)은 가령 어떤 LDAP(lightweight directory access protocol) 파일 서버일 수 있는 파일 서버(408) 상에 저장되어 관리된다.
도 5는 개시된 구조의 일 실시예에 따른 셀 기반 전자 노트북 작업 스케줄링 시스템(500)을 예시한다. 이 시스템(500)은 파일 서버(408) 상의 공유 노트북(104)과 상호 동작하기 위해 점증적 업데이트 컴포넌트(202)를 통해 클라이언트 기반 운영 시스템(402)에 작용하는 노트북 클라이언트 인스턴스(116)를 포함한다.
여기서, 공유 노트북(104)은 두 개의 섹션 셀들(502)을 포함하는 것으로 표현되어 있으나, 다른 셀들이 사용될 수도 있다. 또한, 공유 노트북 셀들(502)의 루트 레벨에서 추적 정보 셀(504)(job_token cell이라 표기)이 생성되어, 저장 및 관리될 수 있다. 예시된 바와 같이, 공유 노트북(104)은 가령 어떤 LDAP(lightweight directory access protocol) 파일 서버일 수 있는 파일 서버(408) 상에 저장되어 관리될 수 있다.
여기 포함된 것은 개시된 구조의 신규한 양태들을 수행하기 위한 전형적 방법론들을 나타내는 일련의 흐름도이다. 설명의 단순성을 위해 가령 플로 차트나 플로 다이어그램의 형태로 여기 도시된 하나 이상의 방법론들은 일련의 행위들로서 보여지고 기술되어 있지만, 이 방법론들은 일부 행위들이 그 방법론들에 따라 다른 순서로 일어나고/나거나 여기 도시되고 기술되는 것과 다른 행위들과 동시 발생적으로 일어날 수 있기 때문에, 상기 행위들의 순서에 국한되지 않는다는 것을 이해하고 예상해야 한다. 예를 들어, 이 분야의 숙련자라면 어떤 방법론이 대안적으로, 상태도에서처럼 상호 관련된 일련의 상태들이나 이벤트들로서 나타내질 수 있다는 것을 이해하고 예상할 것이다. 게다가, 신규한 구현을 위해 어떤 방법론에 예시된 행위들 전부가 필요하지는 않을 것이다.
도 6은 작업 스케줄링의 방법을 예시한다. 600에서, 공유 노트북 정보에 대해 처리된 작업들의 추적 정보가 생성 및 관리된다. 602에서, 공유 노트북 정보에 동기될 어느 작업이 스케줄링된다. 608에서, 그 스케줄링된 작업은 추적 정보에 기반해 공유 노트북 정보에 동기된다.
도 7은 도 6의 방법의 추가 양태들을 예시한다. 700에서, 추적 정보는 파일 서버의 공유 노트북 정보의 루트 레벨에서 데이터로 저장된다. 702에서, 전체 파일 작업이 공유 노트북 정보에 대한 전체 파일의 동기를 위해 스케줄링된다. 704에서, 공유 노트북 정보에 대한 부분 업데이트들의 동기를 위해 리비전 작업이 스케줄링된다. 706에서, 이전 리비전에 종속되는 추적 정보에 대한 테이크 락 리비전(take lock revision)이 제출된다. 708에서, 그 작업을 실행하기 전에 소정 시간 리미트(limit)만큼 기다린다. 710에서, 마지막 실행 작업의 시간 정보를 얻기 위해 추적 정보가 액세스된다.
도 8은 전체 파일 작업들의 작업 스케줄링 및 실행을 나타내는 상태도(800)를 예시한다. 802에서, 어떤 작업을 처리하기 위해 job_token file의 형태로 된 추적 정보가 읽혀진다. 앞서 프로세싱된 어떤 작업이 있었다면, 그 파일은 서버 소스 위치로부터 읽혀지고 마지막으로 실행된 작업들의 시간이 얻어진다. 804에서, 임의적 여분 시간이 작업의 스케줄링에 추가된다. 마지막으로 실행된 작업들이 기억되며 (또는 디폴트 값을 사용) 임의적 여분 시간이 추가된다. 이것은 클라이언트들이 작업들을 동시에 실행하려는 시도를 완화하거나 예방하기 위한 것이다. 806에서, 작업 시간들 중 어느 하나가 소정 리미트를 초과할 때까지 기다리는 배경 대기 상태(background wait state)로 진입한다. 작업을 프로세싱하기 위한 시간에 궁극적으로 부합하는 카운트다운이 수행된다. 이것은 작업들이 서로 다른 시간대나 빈도로 (가령, 한 작업은 시간 당 한 번, 그리고 다른 작업은 하루에 한번) 실행되게 한다.
어떤 작업에 대한 시간이 다 되면, 플로우는 파일 락이 노트북의 루트 내 job_token file에 대해 취해지는 다음 상태(808)로 간다. 락 테이크(lock take, 락 취하기)가 실패하면, 플로우는 다시 802로 간다. 락 테이크가 성공하면 job_token file의 또 하나의 사본이 서버로부터 검색된다. 이것은 다른 작업이 락을 얻었고 새 추적 정보가 얻어지기 때문이다. 810에서, 락을 얻었을 때 작업이 실행되지 않게 확실히 하기 위해, 마지막 실행 작업의 시간이 job_token file로부터 얻어진다. 마지막 작업이 실행된 후 충분한 시간이 경과했으면, 락이 해제되고 플로우가 다시 802로 간다.
작업이 실행된 적이 없으면 플로우는 810부터 812로 가서 작업을 실행한다. 작업 실행이 성공하면, 플로우는 814로 가서 job_token file을 업데이트한다. 작업 실행이 실패하면, 플로우는 812부터 816으로 가서 작업을 중단한다. 작업 실행 성공이나 실패 어느 경우나, 플로우는 818로 가서 job_token file에 대한 락을 해제한다. 그런 다음 플로우는 818에서 다시 804로 가서 재시작하고 임의적 여분 시간을 추가한다.
도 9는 리비전 작업들에 대한 작업 스케줄링 및 실행을 나타내는 상태도(900)를 예시한다. 902에서, 파일 서버의 공유 노트북으로부터 모든 job_token 셀 리비전이 요청된다. 이 리비전들에는 마지막 작업 시간 및 어떤 다른 클라이언트가 그 셀에 대한 현재의 락을 가지는지 여부가 있을 수 있다. 앞서 프로세싱된 어떤 작업이 존재했으면 파일이 서버 소스 위치로부터 읽혀지고 마지막 실행 작업 시간이 구해진다. 904에서, 임의적 여분 시간이 작업의 스케줄링에 추가된다. 마지막 실행 작업들이 기억되고(또는 디폴트 값 사용) 임의적 여분 시간이 추가된다. 이것은 클라이언트가 동시에 작업을 샐행하려는 시도를 예방하기 위한 것이다. 906에서, 작업 시간들 중 어느 하나가 소정 리미트를 초과할 때까지 대기하는 배경 대기 상태로 진입한다. 궁극적으로 작업을 프로세싱하는 시간에 부합하는 카운트다운이 수행된다. 이것은 작업들이 서로 다른 시간대나 빈도(가령, 한 작업은 한 시간에 한번, 다른 작업은 하루에 한 번)로 실행되게 한다.
어떤 작업에 대한 시간이 다 되면, 플로우는 다음 상태인 908로 가서, 이전 리비전에 좌우되는 테이크 락 리비전을 제공한다. 이것은, 셀의 최근 리비전이 변경된 경우(이것은 일반적으로 다른 클라이언트가 락을 취했다는 것을 의미함), 그 현재의 테이크 락이 실패할 것임을 확실히 한다. 락 테이크가 실패한 경우, 플로우는 902로 돌아간다. 락 테이크가 성공하면, 플로우는 서버로부터 모든 셀 리비전들의 사본이 얻어지는 908부터 910으로 간다. 910에서, 락을 얻었을 때 작업이 실행되지 않게 확실히 하기 위해, 마지막 실행 작업의 시간이 job_token file로부터 얻어진다. 마지막 작업이 실행된 후 충분한 시간이 경과했으면, 락이 해제되고 플로우는 910으로부터 다시 902로 간다.
작업 실행 시간이 되면, 플로우는 910으로부터 912까지 가서 그 작업을 실행한다. 작업 실행이 성공하면, 플로우는 914로 가서 job_token cell 특성들을 업데이트한다. 그 특성에 대한 새 리비전을 제출함으로써 작업이 실행된 시간이 job_token cell 안에서 업데이트된다. 작업 실행이 실패하면, 플로우는 912부터 916까지 가서 작업을 중단한다. 작업 실행 성공이나 실패 어느 경우나, 플로우는 918로 가서 릴리즈(release) 락 리비전을 제공함으로써 job_token cell에 대한 락을 해제한다. 이제 플로우는 918로부터 다시 904로 가서 재시작하고 랜덤 액세스 시간을 추가한다.
사용자들에게 정보를 디스플레이하는 소정 방식들이 스크린샷으로서 일부 도면들과 관련해 도시되고 기술되어 있지만, 관련 분야의 숙련자라면 다른 다양한 대안들이 활용될 수 있다는 것을 알 수 있을 것이다. "스크린", "스크린샷", "웹 페이지", "문서", 및 "페이지"라는 용어들은 여기서 일반적으로 서로 혼용되어 사용된다. 페이지들이나 스크린들은 디스플레이 내용으로서, 혹은 그래픽 사용자 인터페이스로서, 혹은 페이지 상에 디스플레이될 레이아웃과 정보나 콘텐트가 메모리, 데이터베이스, 또는 다른 저장 설비에 저장되는 (가령 퍼스널 컴퓨터, PDA, 모바일 전화기, 또는 다른 적절한 장치를 불문한) 스크린 상에 정보를 묘사하는 다른 방법들을 통해 저장 및/또는 전송된다.
본 출원에 사용된 바와 같이, "컴포넌트" 및 "시스템"이라는 용어는 컴퓨터 관련 개체, 어느 하드웨어, 하드웨어 및 소프트웨어, 소프트웨어, 또는 실행 중인 소프트웨어를 지칭하는 것으로 의도된다. 예를 들어, 컴포넌트는 프로세스 상에서 실행되는 프로세스, 프로세서, 하드 디스크 드라이브, (광학, 고체 상태, 및/또는 자기 저장 매체의) 여러 저장 드라이브들, 오브젝트, 실행 파일들, 실행 스레드(thread), 프로그램, 및/또는 컴퓨터일 수 있으나, 여기에 국한되는 것은 아니다. 예시를 통해, 서버에서 실행되는 애플리케이션 및 그 서버 둘 모두 컴포넌트가 될 수 있다. 하나 이상의 컴포넌트들은 프로세서 및/또는 실행 스레드 안에 상주할 수 있고, 어느 컴포넌트는 한 컴퓨터 상에 국지적으로 있고/있거나 둘 이상의 컴퓨터들 사이에 분산되어 있을 수 있다. "전형적인"이라는 말은 여기서 예, 경우, 또는 예시로서 작용함을 의미하는 것으로 사용될 수 있다. 여기서 "전형적인" 것으로 기술된 어떤 양태나 디자인이 다른 양태나 디자인에 비해 선호되거나 장점을 가지는 것이라고 반드시 해석되는 것은 아니다.
이제 도 10을 참조하면, 개시된 구조에 따라 전자 노트북들을 위한 작업을 실행하도록 동작될 수 있는 컴퓨팅 시스템(1000)의 블록도가 예시되어 있다. 그 다양한 양태를 위한 추가적 상황을 제공하기 위해, 도 10과 이어지는 논의는 다양한 양태가 구현될 수 있는 적절한 컴퓨팅 시스템(1000)의 간략하고 포괄적인 설명을 제공하도록 되어 있다. 상기 내용은 하나 이상의 컴퓨터들 상에서 실행할 수 있는 컴퓨터 실행가능 명령어들에 대한 일반적인 상황에 의거한 것이지만, 당업자라면 신규한 실시예들이 다른 프로그램 모듈들과 결합 및/또는 하드웨어 및 소프트웨어의 결합을 통해서도 구현될 수 있다는 것을 알 수 있을 것이다.
다양한 양태를 구현하기 위한 컴퓨팅 시스템(100)은 프로세싱 유닛(들)(1004), 시스템 메모리(1006), 및 시스템 버스(1008)을 가진 컴퓨터를 포함한다. 프로세싱 유닛(들)(1004)은 단일 프로세서, 멀티 프로세서, 단일 코어 유닛 및 멀티 코어 유닛 같은 다양한 상용 프로세서들 중 어느 하나일 수 있다. 게다가, 당업자라면 이 신규한 방법들이 각각 하나 이상의 관련 장치들과 상호 동작하도록 결합될 수 있는 퍼스널 컴퓨터(가령, 데스크 탑, 랩 탑, 등), 핸드 헬드 컴퓨팅 장치, 마이크로프로세서 기반 혹은 프로그래머블 가전 등 뿐 아니라 미니 컴퓨터, 메인프레임 컴퓨터를 포함하는 다른 컴퓨터 시스템 구성을 통해서도 실시될 수 있다는 것을 예상할 수 있을 것이다.
시스템 메모리(1006)는 휘발성(VOL) 메모리(1010)(가령, RAM(random access memory)) 및 비휘발성 메모리(NON-VOL)(1012)(가령, ROM, EPROM, EEPROM 등)를 포함할 수 있다. 기본 입출력 시스템(BIOS, basic input/output system)은 비휘발성 메모리(1012)에 저장될 수 있고, 가령 시동 중에 컴퓨터(1002) 내 컴포넌트들 사이에서의 데이터 및 신호 통신을 돕는 기본 루틴들을 포함한다. 휘발성 메모리(1010) 역시 데이터를 캐싱하기 위해 정적 RAM 같은 고속 RAM을 포함할 수 있다.
시스템 버스(1008)는 비한정적으로 프로세싱 유닛(들)(1004)에 대한 메모리 하부 시스템(1006)을 포함하는 시스템 컴포넌트들의 인터페이스를 제공한다. 시스템 버스(1008)는 다양한 상용 버스 구조들 중 어느 하나를 이용하여, (메모리 제어기를 이용하거나 이용하지 않고) 메모리 버스, 및 주변 버스(가령, PCI, ICIe, AGP, LPC 등)에 더 상호 연결될 수 있는 몇 가지 유형의 버스 구조 중 어느 하나일 수 있다.
컴퓨터(1002)는 저장 하부 시스템(들)(1014), 및 저장 하부 시스템(들)(1014)을 시스템 버스(1008) 및 다른 요망되는 컴퓨터 컴포넌트들에 인터페이스하기 위한 저장 인터페이스(들)(1016)을 더 포함한다. 저장 하부 시스템(들)(1014)은 가령 하드 디스크 드라이브(HDD), 자기 플로피 디스크 드라이브(FDD), 및/또는 광 디스크 저장 드라이브(가령, CD-ROM 드라이브, DVD 드라이브) 중 하나 이상을 포함할 수 있다. 저장 인터페이스(들)(1016)은 가령 EIDE, ATA, SATA, 및 IEEE 1394 같은 인터페이스 기술들을 포함할 수 있다.
하나 이상의 프로그램과 데이터는 운영 시스템(1020), 하나 이상의 애플리케이션 프로그램(1022), 기타 프로그램 모듈(1024) 및 프로그램 데이터(1026)를 포함하는 메모리 하부 시스템(1006), 탈부착 가능 메모리 하부 시스템(1018)(가령, 플래시 드라이브 폼 팩터(flashdrive form factor) 기술) 및/또는 저장 하부 시스템(들)(1014)(가령, 광, 자기, 고체 상태)에 저장될 수 있다.
컴퓨터(1002)가 클라이언트 기반의 장치인 경우, 하나 이상의 애플리케이션 프로그램(1022), 기타 프로그램 모듈(1024), 및 프로그램 데이터(1026)는 이를테면, 도 1의 클라이언트 인스턴스들(118), 작업들(108), 및 새 작업(114), 도 2의 점증적 업데이트 컴포넌트(202), 도 3의 보기(302), 도 4의 운영 시스템(403), 및 도 6-9의 흐름도 및 상태도에 예시된 하나 이상의 단계들을 포함할 수 있다.
컴퓨터(1002)가 서버 기반의 장치인 경우, 하나 이상의 애플리케이션 프로그램(1022), 기타 프로그램 모듈(1024), 및 프로그램 데이터(1026)는 이를테면, 도 1의 작업 추적 컴포넌트(102), 추적 정보(106), 스케줄링 컴포넌트(112), 작업들(108), 새 작업(114), 공유 전자 노트북(104) 및 공유 노트북 정보(110), 도 3의 파일 시스템(304), 도 4의 파일 서버(408), 공유 노트북 파일들(404) 및 추적 정보 파일(406), 도 5의 공유 노트북 파일들(502) 및 추적 정보 셀(504), 및 도 6-9의 흐름도 및 상태도에서 예시된 하나 이상의 단계들을 포함할 수 있다.
일반적으로, 프로그램은 특정 작업들을 수행하거나 특정 추상 데이터 유형들을 구현하는 루틴, 메소드, 데이터 구조, 기타 소프트웨어 컴포넌트를 포함한다. 운영 시스템(1020), 애플리케이션(1022), 모듈(1024) 및/또는 데이터(1026)의 전부나 일부가 가령 휘발성 메모리(1016) 같은 메모리에 캐싱될 수도 있다. 개시된 구조는 다양한 사용 운영 시스템이나 운영 시스템들의 조합(가령, 버추얼 머신 같은 것)을 이용해 구현될 수 있다는 것을 알아야 한다.
저장 하부 시스템(들)(1014) 및 메모리 하부 시스템들(1006 및 1018)은 데이터, 데이터 구조, 컴퓨터 판독가능 명령어 등의 휘발성 및 비휘발성 저장을 위한 컴퓨터 판독가능 매체로서 기능한다. 컴퓨터 판독가능 매체는 컴퓨터(1002)에 의해 액세스될 수 있는 어떤 이용 가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 탈부착형 및 비탈부착형 매체를 포함한다. 컴퓨터(1002)에 있어서, 상기 매체는 데이터의 저장을 어떤 적절한 디지털 포맷을 통해 수용한다. 당업자라면 집(zip) 드라이브, 자기 테이프, 플래시 메모리 카드, 카트리지 등, 개시된 구조의 신규한 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 저장하기 위한 다른 유형의 컴퓨터 판독가능 매체가 활용될 수도 있다는 것을 예상할 수 있을 것이다.
사용자는 키보드 및 마우스 같은 외부 사용자 장치(1028)를 이용해 컴퓨터(1002)와 프로그램 및 데이터를 상호 교류할 수 있다. 다른 외부 사용자 입력 장치(1028)는 마이크로폰, IR(적외선) 리모컨, 조이스틱, 게임 패드, 카메라 인식 시스템, 스타일러스 펜, 터치 스크린, 제스춰 시스템(가령, 눈의 이동, 머리의 이동 등) 등을 포함할 수 있다. 사용자는 가령 컴퓨터가 휴대형 컴퓨터인 경우, 터치 패드, 마이크로폰, 키보드 등과 같은 온보드 사용자 입력 장치(1030)를 이용해 컴퓨터(1002)와 프로그램 및 데이터를 상호 교류할 수 있다. 이러한 것들 및 기타 입력 장치들은 시스템 버스(1008)를 거쳐 입출력(I/O) 장치 인터페이스(들)(1032)을 통해 프로세싱 유닛(들)(1004)과 연결되나, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등과 같은 다른 인터페이스에 의해 연결될 수 있다. I/O 장치 인터페이스(1032)는 또한 프린터, 오디오 장치, 카메라 장치, 사운드 카드 및/또는 온보드 오디오 프로세싱 사양 같은 출력 주변 장치들(1034)의 이용을 돕는다.
하나 이상의 그래픽 인터페이스(들)(1036)(전형적으로 그래픽 프로세싱 유닛(GPU)이라고도 칭함)은 컴퓨터(1002) 및 외부 디스플레이(들)(1038)(가령, LCD, 플라즈마) 및/또는 온보드 디스플레이들(1040)(가령, 휴대형 컴퓨터용) 사이에 그래픽과 비디오 신호를 제공한다. 그래픽 인터페이스(들)(1036)은 컴퓨터 시스템 보드의 일부로서 제조될 수도 있다.
컴퓨터(1002)는 유무선 통신 하부 시스템(1042)을 거쳐 하나 이상의 네트워크 및/또는 다른 컴퓨터들로의 로직 접속을 이용하는 네트워킹 환경(가령, IP)에서 동작할 수 있다. 다른 컴퓨터들은 워크스테이션, 서버, 라우터, 퍼스널 컴퓨터, 마이크로프로세서 기반 오락기기, 피어(peer) 장치나 다른 공통 네트워크 노드를 포함할 수 있고, 통상적으로 컴퓨터(1002)와 관련해 기술된 엘리먼트들 중 다수나 전부를 포함한다. 로직 접속은 LAN(local area network), WAN(wide area network), 핫스팟 등으로의 유무선 연결을 포함할 수 있다. LAN과 WAN 네트워킹 환경은 사무실이나 회사에서 일반적이며, 인트라넷 처럼 인터넷 같은 글로벌 통신 네트워크에 연결될 수 있는 기업 전반의 컴퓨터 네트워크를 조성한다.
네트워킹 환경에서 사용될 때 컴퓨터(1002)는 유무선 네트워크, 유무선 프린터, 유무선 입력 장치들(1044) 등과 통신하기 위해 유무선 통신 하부 시스템(1042)(가령, 네트워크 인터페이스 어댑터, 온보드 트랜시버 하부 시스템 등)을 거쳐 네트워크로 연결된다. 컴퓨터(1002)는 모뎀을 포함하거나 네트워크를 통해 통신을 설정하기 위한 다른 수단을 가질 수 있다. 네트워킹 환경 하에서, 컴퓨터(1002)와 관련된 프로그램과 데이터는 분산 시스템과 결부되는 것 같이, 멀리 있는 메모리/저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 전형적인 것이며 컴퓨터들 사이에 통신 링크를 설정하는 다른 수단들이 사용될 수 있다는 것을 예상할 것이다.
컴퓨터(1002)는 가령, 프린터, 스캐너, 데스크 탑 및/또는 휴대형 컴퓨터, PDA(personal digital assistant), 통신 위성, 무선 검출가능 태그와 관련된 설비나 위치(가령, 키오스크, 신문 가판대, 화장실), 전화기와 무선 통신시 유효하게 배치되는 무선 장치들(가령, IEEE 802.11 공중파 변조 기법들) 같은 IEEE 802.xx 규격 패밀리 등의 무선 기술을 이용해 유무선 장치나 개체들과 통신하도록 동작할 수 있다. 이것은 최소한, 핫스팟을 위한 Wi-Fi(또는 Wireless Fidelity), WiMax, 및 블루투스 무선 기술들을 포함한다. 따라서 통신은 적어도 두 장치들 사이의 보편적 네트워크나 간단히 애드호크(ad hoc) 통신을 이용하는 소정의 구조일 수 있다. Wi-fi 네트워크는 안전하고, 안정적이며 빠른 무선 접속을 제공하기 위해 IEEE 802.11x(a,b,g 등)라 부리는 무선 기술을 이용한다. Wi-Fi 네트워크는 컴퓨터들을 서로 간에, 인터넷에, 그리고 유선 네트워크(IEEE 802.3 관련 매체 및 기능들 사용)에 연결하는 데 사용될 수 있다.
예시된 양태들은 소정 작업들이 통신 네트워크를 통해 링크되는 원격 프로세싱 장치들에 의해 수행되는 분산형 컴퓨팅 환경에서 실시될 수도 있다. 분산형 컴퓨팅 환경에서는 프로그램 모듈들이 로컬 및/또는 리모트 저장부 및/또는 메모리 시스템에 위치될 수 있다.
이제 도 11을 참조하면, 버추얼 전자 노트북 작업 스케줄링 및 동기를 위한 컴퓨팅 환경(1100)의 개략적 블록도가 예시된다. 그 환경(1100)은 하나 이상의 클라이언트(들)(1102)을 포함한다. 클라이언트(들)(1102)은 하드웨어 및/또는 소프트웨어(가령, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 클라이언트(들)(1102)은 가령 쿠키(들) 및/또는 관련 정황 정보를 저장할 수 있다.
환경(1100)은 또한 하나 이상의 서버(들)(1104)을 포함한다. 서버(들)(1104)은 또한 하드웨어 및/또는 소프트웨어(가령, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 서버들(104)은 가령 구조를 활용함으로써 변환을 수행할 스레드들을 포함할 수 있다. 클라이언트(1102) 및 서버91104) 사이에 가능한 한 가지 통신은 둘 이상의 컴퓨터 프로세스들 사이에 전송되도록 되어 있는 데이터 패킷 형식으로 되어 있을 수 있다. 데이터 패킷은 가령 쿠키 및/또는 관련 정황 정보를 포함할 수 있다. 환경(1100)은 클라이언트(들)(1102) 및 서버(들)(1104) 사이에서의 통신을 돕는데 활용될 수 있는 통신 프레임워크(1106)(가령, 인터넷 같은 글로벌 통신 네트워크)를 포함한다.
통신은 유선(광 섬유 포함) 및/또는 무선 기술을 통해 촉진될 수 있다. 클라이언트(들)(1102)은 클라이언트(들)(1102)에 대해 국지적으로 정보(가령, 쿠키(들) 및/또는 관련 정황 정보)를 저장하는데 활용될 수 있는 하나 이상의 클라이언트 데이터 저장부(들)(1108)로 유효하게 연결된다. 마찬가지로, 서버(들)(1104)도 서버들(1104)에 대해 국지적으로 정보를 저장하는데 활용될 수 있는 하나 이상의 서버 데이터 저장부(들)(1110)에 유효하게 연결된다.
위에서 기술된 것은 개시된 구조의 예들을 포함한다. 모든 인지 가능한 구성요소들 및/또는 방법론들의 조합을 기술하는 것은 물론 가능하지 않겠지만, 이 분야의 숙련자라면 많은 다른 조합과 치환이 있을 수 있다는 것을 알 수 있을 것이다. 따라서, 상기 신규한 구조는 첨부된 청구범위의 개념과 범위 안에 들어오는 모든 변형안, 수정안 및 변경안들을 포괄하도록 되어 있다. 또한, 용어 "포함한다(includes)"가 상세한 설명이나 청구범위에 사용되는 한도 내에서, 그 용어는 "포함한다(comprising)"는 말이 청구범위에서 이행어로서 활용될 때 해석되는 바와 같이 "포함한다(comprising)"와 유사한 방식으로 포괄적인 것으로 의도된다.

Claims (15)

  1. 컴퓨터로 구현된 작업 스케줄링 시스템으로서,
    공유 노트북 정보에 대해 프로세싱되는 작업에 관한 추적 정보를 생성 및 관리하기 위한 공유 전자 노트북 관련 작업 추적 컴포넌트를 실행하는 적어도 하나의 컴퓨터 - 상기 공유 전자 노트북은 파일과 디렉토리의 콜렉션을 포함하는 루트 디렉토리를 포함하고, 노트북 섹션은 상기 파일에 매핑되고, 노트북 폴더는 상기 디렉토리에 매핑되고, 상기 추적 정보는 상기 공유 전자 노트북의 상기 루트 디렉토리 내에 작업 파일로서 저장되고, 상기 추적 정보는 상기 공유 전자 노트북 내의 파일의 적어도 일부에 대한 사용자에 의한 변경과 연관된 특성(properties)을 포함함 - 와,
    상기 추적 정보에 기반하여 상기 공유 노트북 정보에 대한 상기 공유 전자 노트북의 상기 루트 디렉토리 내에 저장된 복수의 작업 파일들을 동기화하기 위한 스케줄링 컴포넌트를 실행하는 적어도 하나의 컴퓨터
    를 포함하되,
    상기 스케줄링 컴포넌트는,
    이전의 작업 파일들의 사본을 검색하고,
    상기 이전의 작업 파일들로부터 마지막 실행 작업 파일의 시간을 결정하고,
    상기 마지막 실행 작업 파일에 대한 원자적 락 시간(a time for an atomic lock)이 만료했음을 보장하기 위해 상기 마지막 실행 작업 파일의 시간이 사전정의된 한도(limit)를 초과하는 것을 기다리고,
    상기 마지막 실행 작업 파일의 시간이 상기 사전정의된 한도를 초과했음을 판정한 것에 응답하여, 상기 공유 전자 노트북의 상기 루트 디렉토리 내의 현재의 작업 파일에 대한 원자적 락을 취하는 것을 시도하고,
    상기 원자적 락을 취한 것에 응답하여, 상기 현재의 작업 파일을 상기 공유 노트북 정보에 동기화하도록 구성되는
    컴퓨터 구현 작업 스케줄링 시스템.
  2. 제1항에 있어서,
    상기 현재의 작업 파일은 상기 공유 전자 노트북 내의 전체 파일에 대한 변경을 포함하는
    컴퓨터 구현 작업 스케줄링 시스템.
  3. 제1항에 있어서,
    상기 현재의 작업 파일은 상기 공유 전자 노트북 내의 파일의 상기 적어도 일부에 대한 점증적(incremental) 변경을 포함하는
    컴퓨터 구현 작업 스케줄링 시스템.
  4. 제1항에 있어서,
    상기 현재의 작업 파일을 상기 공유 노트북 정보에 대한 점증적 업데이트로서 수신하는 점증적 업데이트 컴포넌트를 실행하는 적어도 하나의 컴퓨터
    를 더 포함하는 컴퓨터 구현 작업 스케줄링 시스템.
  5. 제4항에 있어서,
    상기 점증적 업데이트를 위한 상기 현재의 작업은 변경되었던 파일 일부 내의 데이터에만 관련된 변경의 패킷을 포함하는
    컴퓨터 구현 작업 스케줄링 시스템.
  6. 제1항에 있어서,
    상기 추적 정보는 상기 현재의 작업 파일의 마지막 실행에 대한 시간 정보를 포함하는
    컴퓨터 구현 작업 스케줄링 시스템.
  7. 제1항에 있어서,
    상기 스케줄링 컴포넌트는 여러 클라이언트에 의한 동시 발생적 작업 실행 시도를 완화하기 위해 상기 현재의 작업 파일에 무작위(random) 여분 시간을 추가하도록 더 구성되는
    컴퓨터 구현 작업 스케줄링 시스템.
  8. 제1항에 있어서,
    상기 사전정의된 한도는 상기 현재의 작업 파일을 처리하기 위한 시간을 포함하는
    컴퓨터 구현 작업 스케줄링 시스템.
  9. 컴퓨터로 구현된, 공유 전자 노트북과 연관된 작업 스케줄링 방법으로서,
    공유 노트북 정보에 대해 프로세싱되는 작업에 대한 추적 정보를 생성 및 관리하는 단계 - 상기 공유 전자 노트북은 파일과 디렉토리의 콜렉션을 포함하는 루트 디렉토리를 포함하고, 노트북 섹션은 상기 파일에 매핑되고, 노트북 폴더는 상기 디렉토리에 매핑되고, 상기 추적 정보는 상기 공유 전자 노트북의 상기 루트 디렉토리 내에 데이터로서 저장됨 - 와,
    상기 공유 노트북 정보에 대한 동기화를 위해,
    이전의 작업 파일들의 사본을 검색하고,
    상기 이전의 작업 파일들로부터 마지막 실행 작업 파일의 시간을 결정하고,
    상기 마지막 실행 작업 파일의 시간이 이전에 취해진 락 리비전 시간의 만료를 위해 사전정의된 한도를 초과하는 것을 기다리고,
    상기 마지막 실행 작업 파일의 시간이 상기 사전정의된 한도를 초과했음을 판정한 것에 응답하여, 상기 공유 전자 노트북의 상기 루트 디렉토리 내의 현재의 작업 파일에 대한 원자적 락을 취하는 것을 시도하고,
    상기 원자적 락을 취한 것에 응답하여, 상기 현재의 작업 파일을 상기 공유 노트북 정보에 동기화함으로써
    작업을 스케줄링하는 단계
    를 포함하는 컴퓨터 구현 작업 스케줄링 방법.
  10. 제9항에 있어서,
    상기 공유 노트북 정보에 대한 전체 파일의 동기화를 위해 전체 파일 작업을 스케줄링하는 단계
    를 더 포함하는 컴퓨터 구현 작업 스케줄링 방법.
  11. 제9항에 있어서,
    상기 공유 노트북 정보에 대한 부분적 업데이트의 동기화를 위해 리비전 작업을 스케줄링하는 단계
    를 더 포함하는 컴퓨터 구현 작업 스케줄링 방법.
  12. 제9항에 있어서,
    상기 추적 정보에 액세스하여 마지막 실행 작업에 관한 테이크 락 리비전 시간 정보를 획득하는 단계
    를 더 포함하는 컴퓨터 구현 작업 스케줄링 방법.
  13. 제9항에 있어서,
    상기 사전정의된 한도는 스케줄링된 상기 작업을 처리하기 위한 시간을 포함하는
    컴퓨터 구현 작업 스케줄링 방법.
  14. 컴퓨터 실행가능 명령어를 저장하고 있는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 실행가능 명령어는 컴퓨터에 의해 실행될 경우 상기 컴퓨터로 하여금 공유 전자 노트북 연관 작업 스케줄링 기능을 실행하여,
    공유 노트북 정보에 대해 프로세싱되는 작업에 대한 추적 정보를 생성 및 관리하게 하고 - 상기 공유 전자 노트북은 파일과 디렉토리의 콜렉션을 포함하는 루트 디렉토리를 포함하고, 노트북 섹션은 상기 파일에 매핑되고, 노트북 폴더는 상기 디렉토리에 매핑되고, 상기 추적 정보는 상기 공유 전자 노트북의 상기 루트 디렉토리 내에 데이터로서 저장됨 - ,
    상기 공유 노트북 정보에 대한 동기화를 위해,
    이전의 작업 파일들의 사본을 검색하고,
    상기 이전의 작업 파일들로부터 마지막 실행 작업 파일의 시간을 결정하고,
    상기 마지막 실행 작업 파일의 시간이 이전에 취해진 락 리비전 시간의 만료를 위해 사전정의된 한도를 초과하는 것을 기다리고,
    상기 마지막 실행 작업 파일의 시간이 상기 사전정의된 한도를 초과했음을 판정한 것에 응답하여, 상기 공유 전자 노트북의 상기 루트 디렉토리 내의 현재의 작업 파일에 대한 원자적 락을 취하는 것을 시도하고,
    상기 원자적 락을 취한 것에 응답하여, 상기 현재의 작업 파일을 상기 공유 노트북 정보에 동기화함으로써
    작업을 스케줄링하도록 하는
    컴퓨터 판독가능 저장 매체.
  15. 삭제
KR1020117025654A 2009-05-01 2010-04-30 전자 노트북에서의 공유 작업 스케줄링 KR101660072B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/433,907 2009-05-01
US12/433,907 US9665413B2 (en) 2009-05-01 2009-05-01 Shared job scheduling in electronic notebook
PCT/US2010/033235 WO2010127286A2 (en) 2009-05-01 2010-04-30 Shared job scheduling in electronic notebook

Publications (2)

Publication Number Publication Date
KR20120017414A KR20120017414A (ko) 2012-02-28
KR101660072B1 true KR101660072B1 (ko) 2016-09-26

Family

ID=43031392

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117025654A KR101660072B1 (ko) 2009-05-01 2010-04-30 전자 노트북에서의 공유 작업 스케줄링

Country Status (14)

Country Link
US (1) US9665413B2 (ko)
EP (1) EP2425327A4 (ko)
JP (1) JP5744846B2 (ko)
KR (1) KR101660072B1 (ko)
CN (1) CN102414657B (ko)
AU (1) AU2010242832B2 (ko)
BR (1) BRPI1011218A2 (ko)
CA (1) CA2757073C (ko)
IL (1) IL215416A (ko)
MX (1) MX2011011344A (ko)
RU (1) RU2546326C2 (ko)
TW (1) TWI522936B (ko)
WO (1) WO2010127286A2 (ko)
ZA (1) ZA201106948B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529884B2 (en) * 2012-01-19 2016-12-27 Microsoft Technology Licensing, Llc Usage based synchronization of note-taking application features
US9158559B2 (en) * 2012-01-27 2015-10-13 Microsoft Technology Licensing, Llc Roaming of note-taking application features
US8843587B2 (en) 2012-02-07 2014-09-23 Microsoft Corporation Retrieving availability information from published calendars
US9870295B2 (en) * 2014-07-18 2018-01-16 General Electric Company Automation of workflow creation and failure recovery
JP6074396B2 (ja) * 2014-09-26 2017-02-01 富士フイルム株式会社 レイアウト作成システム、サーバ、クライアント、レイアウト作成方法、プログラムおよび記録媒体
CN111031109B (zh) * 2019-11-29 2022-12-06 广西电网有限责任公司防城港供电局 一种网络安全设备备份及同步管理的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161516A1 (en) 2005-01-14 2006-07-20 Microsoft Corporation Method and system for synchronizing multiple user revisions to a shared object
JP2009510614A (ja) 2005-09-27 2009-03-12 株式会社ソニー・コンピュータエンタテインメント セルプロセッサ方法と装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0318935A (ja) * 1989-06-15 1991-01-28 Hitachi Ltd データリストに対するアクセスの直列化方式
JP2703498B2 (ja) * 1993-04-30 1998-01-26 インターナショナル・ビジネス・マシーンズ・コーポレイション バージョン化オブジェクトに対するロッキング機構
JP3516049B2 (ja) 1995-03-17 2004-04-05 富士通株式会社 バッチジョブ制御システム
US6668073B1 (en) 1998-11-12 2003-12-23 The University Of British Columbia Anthropomorphic film phantom for three-dimensional dosimetry
JP3915331B2 (ja) * 1999-08-10 2007-05-16 富士ゼロックス株式会社 共有ドキュメントの編集装置及び編集方法
US6687257B1 (en) * 1999-08-12 2004-02-03 Rockwell Automation Technologies, Inc. Distributed real-time operating system providing dynamic guaranteed mixed priority scheduling for communications and processing
US6625258B1 (en) 1999-12-27 2003-09-23 Nortel Networks Ltd System and method for providing unified communication services support
US6529905B1 (en) * 2000-01-11 2003-03-04 Frontline Solutions, Inc. Method and system for allowing multiple users to edit a hierarchical data structure
US7249314B2 (en) * 2000-08-21 2007-07-24 Thoughtslinger Corporation Simultaneous multi-user document editing system
KR100880273B1 (ko) 2000-11-16 2009-01-23 씨.디.씨. 에스.알.엘 최저가로 랜 상에서 음성 통신 및 데이터 전송을 통합하는 장치 및 방법
US20020124057A1 (en) 2001-03-05 2002-09-05 Diego Besprosvan Unified communications system
DE60213419T2 (de) * 2001-03-16 2007-10-31 Novell, Inc., Provo Client-server-modell zur synchronisation von dateien
CN1301475C (zh) 2001-08-13 2007-02-21 鸿富锦精密工业(深圳)有限公司 用于无线设备的主动资料复制方法
US20030172185A1 (en) 2002-03-07 2003-09-11 Rockwell Electronic Commerce Technologies, L.L.C. Method and system for adding text data to data communication sessions
JP2004054799A (ja) 2002-07-23 2004-02-19 Katsuyoshi Nagashima ネットワーク電子手帳およびスケジュール予約方法
US7206776B2 (en) * 2002-08-15 2007-04-17 Microsoft Corporation Priority differentiated subtree locking
US7584114B2 (en) 2003-01-22 2009-09-01 International Business Machines Corporation System and method for integrating projects events with personal calendar and scheduling clients
US7343432B1 (en) * 2003-09-19 2008-03-11 Emc Corporation Message based global distributed locks with automatic expiration for indicating that said locks is expired
US8019779B2 (en) 2004-05-04 2011-09-13 International Business Machines Corporation Efficient locking protocol for sub-document concurrency control using prefix encoded node identifiers in XML databases
RU2295752C1 (ru) 2006-03-20 2007-03-20 Закрытое акционерное общество "1С Акционерное общество" Способ управления синхронизацией обновлений программного обеспечения
US20070255833A1 (en) * 2006-04-27 2007-11-01 Infosys Technologies, Ltd. System and methods for managing resources in grid computing
US20080184241A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Techniques for automated balancing of tasks across multiple computers
US20080288501A1 (en) * 2007-05-14 2008-11-20 Michael Bender Integrating Database Functionality with Workload Schedulers
US7933952B2 (en) 2007-06-29 2011-04-26 Microsoft Corporation Collaborative document authoring
US7818298B2 (en) * 2007-07-06 2010-10-19 Salesforce.Com, Inc. System and method for tracking documents in an on-demand service
US8544014B2 (en) * 2007-07-24 2013-09-24 Microsoft Corporation Scheduling threads in multi-core systems
US9436927B2 (en) * 2008-03-14 2016-09-06 Microsoft Technology Licensing, Llc Web-based multiuser collaboration
US7899883B2 (en) * 2008-06-13 2011-03-01 Microsoft Corporation Merging versions of documents using multiple masters

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161516A1 (en) 2005-01-14 2006-07-20 Microsoft Corporation Method and system for synchronizing multiple user revisions to a shared object
JP2009510614A (ja) 2005-09-27 2009-03-12 株式会社ソニー・コンピュータエンタテインメント セルプロセッサ方法と装置

Also Published As

Publication number Publication date
CA2757073C (en) 2016-09-20
US20100281484A1 (en) 2010-11-04
WO2010127286A2 (en) 2010-11-04
CA2757073A1 (en) 2010-11-04
BRPI1011218A2 (pt) 2016-03-15
RU2011144132A (ru) 2013-05-10
IL215416A0 (en) 2011-12-29
KR20120017414A (ko) 2012-02-28
TW201040855A (en) 2010-11-16
WO2010127286A3 (en) 2011-01-20
ZA201106948B (en) 2012-11-28
JP2012525656A (ja) 2012-10-22
US9665413B2 (en) 2017-05-30
MX2011011344A (es) 2011-11-18
RU2546326C2 (ru) 2015-04-10
CN102414657A (zh) 2012-04-11
JP5744846B2 (ja) 2015-07-08
IL215416A (en) 2016-12-29
TWI522936B (zh) 2016-02-21
EP2425327A2 (en) 2012-03-07
AU2010242832A1 (en) 2011-10-20
CN102414657B (zh) 2014-12-24
EP2425327A4 (en) 2013-04-03
AU2010242832B2 (en) 2014-05-08

Similar Documents

Publication Publication Date Title
JP7158482B2 (ja) クライアント同期における違反の解決のための方法、コンピュータ可読媒体、及びシステム
US10678649B2 (en) Interfacing with a virtual database system
US20190155791A1 (en) Multi-master text synchronization using deltas
KR101660072B1 (ko) 전자 노트북에서의 공유 작업 스케줄링
RU2392661C2 (ru) Доступ к данным до входа в систему
US20100115254A1 (en) Synchronization in Multiple Environments
CN111801661A (zh) 多主机分布式数据管理系统中的事务操作
US20100241990A1 (en) Re-usable declarative workflow templates
US11687703B2 (en) Shortcut to move a selection into a new document
KR20130115220A (ko) 온라인 그림의 동시편집
US20140090084A1 (en) Collaborative comic creation
KR101661789B1 (ko) 양방향 동기 중에 자기 참조 필드의 동기
CN113468110A (zh) 一种文件管理方法、装置、电子设备及存储介质
US20170192945A1 (en) High-performance editing of large remote files in client-server architecture
US20230281009A1 (en) Managing artifact information including finding a searched artifact information item
AU2017215342B2 (en) Systems and methods for mixed consistency in computing systems
Dooley Recipes for success in new science gateway development
JP2018072905A (ja) 文書管理アプリケーションにおけるファイルリストペインの一覧表示の更新方法

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant