text:
Đặt phòng tại khách sạn này và tích lũy đêm sau thời gian lưu trú
Vị trí.
Tọa lạc tại Thị trấn cũ - Zurich), Hotel City nằm khá gần Lindenhof, Bảo tàng Quốc gia Thụy Sĩ và Fraumuenster. Bahnhofstrasse và Haus Konstruktiv cũng ở khá gần đó.
Đặc điểm của khách sạn.
Khách sạn tại Zurich này có nhà hàng và quầy bar/sảnh chờ. Đây là khách sạn không khói thuốc.
Tiện nghi phòng.
61 phòng được trang bị điều hòa nhiệt độ tại Hotel City bao gồm minibar và két bảo mật. TV được trang bị các kênh truyền hình vệ tinh và các kênh phim phải trả tiền.
Chúng tôi đang theo dõi giá của khách sạn này vào ngày lưu trú dự kiến của bạn
( - )

markdown:
Đặt phòng tại khách sạn này và tích lũy đêm sau thời gian lưu trú
**Vị trí. **
Tọa lạc tại Thị trấn cũ -
**Zurich**), Hotel City nằm khá gần **Lindenhof**, **Bảo tàng Quốc gia Thụy Sĩ** và **Fraumuenster**. **Bahnhofstrasse** và **Haus Konstruktiv** cũng ở khá gần đó. **Đặc điểm của khách sạn. **
Khách sạn tại Zurich này có
*nhà hàng* và *quầy bar/sảnh chờ*. Đây là *khách sạn không khói thuốc*. **Tiện nghi phòng. **
61 phòng được trang bị điều hòa nhiệt độ tại Hotel City bao gồm
*minibar* và *két bảo mật*. TV được trang bị *các kênh truyền hình vệ tinh * và *các kênh phim phải trả tiền*.
|Ẩm thực||
|
|Làm việc từ xa||
|
|Dịch vụ||
|
|Tiện nghi||
|
|Tiện nghi như tại nhà||
|
|Nghỉ ngơi||
|
|Giải trí||
|
|Kết nối||
|
|Xem thêm||
|
Chúng tôi đang theo dõi giá của khách sạn này vào ngày lưu trú dự kiến của bạn
**( - )**

Content-Language: vi-VN

X-UA-Compatible: IE=Edge

Set-Cookie: user=QSp2aV9WTnxIQ09NX1ZOIUUqMzczMjE0fG51bGx8bnVsbHwyIUYq; Domain=.hotels.com; Expires=Sun, 23-Aug-2015 09:34:05 GMT; Path=/


text:
Vui lòng cho biết email của bạn để nhận Từ vựng của Urban mỗi sáng nhé!
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.

WARC-Type: response

Content-Type: application/http; msgtype=response

Server: Cowboy

X-Frame-Options: SAMEORIGIN

X-Xss-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Content-Type: text/html; charset=utf-8

Cache-Control: max-age=3600, public

Via: 1.1 varnish

Content-Encoding: gzip

Accept-Ranges: bytes

Connection: close

X-Cache: MISS

Vary: Accept-Encoding


text:
xu hướng
thư mục
mẫu tự
Vui lòng cho biết email của bạn để nhận Từ vựng của Urban mỗi sáng nhé!
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.

X-Served-By: cache-iad2124-IAD, cache-jfk1024-JFK

X-Cache: MISS, MISS


text:
Sign in to post new definitions, images, and sounds and create lists of favorites.
Vui lòng cho biết email của bạn để nhận Từ vựng của Urban mỗi sáng nhé!
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.

Cache-Control: max-age=0, private, must-revalidate


text:
Đèn báo (lập trình)
Trong khoa học máy tính, đèn báo là một biến được bảo vệ hoặc một kiểu dữ liệu trừu tượng tạo ra sự trừu tượng hoá đơn giản nhưng hữu dụng để kiểm soát truy cập của nhiều tiến trình đến một tài nguyên chung trong môi trường lập trình song song.
Một cách nhìn về đèn báo là một bản ghi có bao nhiêu đơn vị của một tài nguyên có thể sử dụng, gắn với các tác vụ điều chỉnh bản ghi đó một cách an toàn (nghĩa là không tạo ra race condition) khi yêu cầu hoặc giải phóng các đơn vị và đợi đến khi một đơn vị rảnh rỗi nếu cần. Đèn báo là một công cụ hữu ích để chống race condition và khoá chết, tuy nhiên việc sử dụng nó không đảm bảo rằng chương trình không gặp phải các vấn đề trên. Đèn báo cho phép một số lượng tuỳ ý tài nguyên gọi là đèn báo đếm (counting semaphore) trong khi đèn báo bị giới hạn trong giá trị 0 và 1 được gọi là đèn báo nhị phân (binary semaphores).
Khái niệm đèn báo được phát minh bởi nhà nghiên cứu người Hà Lan Edsger Dijkstra,[1] and the concept has found widespread use in a variety of operating systems.
Mục lục
Ý nghĩa và cài đặt[sửa | sửa mã nguồn]
Đèn báo đếm được trang bị hai thao tác, kí hiệu là V và P. Thao tác V tăng đèn báo S và thao tác P giảm nó. Ý nghĩa của chúng được giải thích bên dưới. Ngoặc vuông chỉ ra các thao tác nguyên tử, nghĩa là các thao tác không thể chia nhỏ dưới góc nhìn của các tiến trình khác.
function V(semaphore S): Atomically increment S [S ← S + 1] function P(semaphore S): repeat: Between repetitions of the loop other processes may operate on the semaphore [if S > 0: Atomically decrement S - note that S cannot become negative S ← S - 1 break]
Giá trị của đèn báo S là số đơn vị của tài nguyên còn rỗi. Thao tác P chờ đợi tích cực hoặc ngủ cho đến khi tài nguyên được bảo vệ trở nên rảnh rỗi, khi đó nó ngay lập tức yêu cầu. Thao tác V ngược lại: làm cho tài nguyên rảnh rỗi trở lại sau khi một tiến trình đã sử dụng xong.
Ví dụ: Bài toán người sản xuất/người tiêu dùng[sửa | sửa mã nguồn]
Cho
emptyCount và
fullCount là các đèn báo đém, và
emptyCount được khởi tạo bằng N trong khi
fullCount bằng 0, người sản xuất thực hiện lặp lại công việc sau:
produce: P(emptyCount) putItemIntoQueue(item) V(fullCount)
Người sử dụng lặp đi lặp lại công việc sau:
consume: P(fullCount) item ← getItemFromQueue() V(emptyCount)
Lưu ý rằng thứ tự các phép toán là quan trọng. Ví dụ, nếu người sản xuất đặt hàng vào hàng đợi sau khi tăng fullCount, người sử dụng có thể cố lấy hàng trước khi nó được ghi. Nếu người sản xuất đặt hàng vào trước khi giảm emptyCount, nó có thể vượt quá giới hạn của hàng đợi.
Nguồn gốc tên hàm[sửa | sửa mã nguồn]
Các tên chuẩn P và V xuất phát từ chữ cái đầu của từ tiếng Hà Lan. V là viết tắt của verhogen ("tăng lên"). Có nhiều giải thích cho P, bao gồm proberen - "kiểm tra"[2], passeer - "vượt qua", probeer - "thử", and pakken for "bắt". Tuy nhiên, Dijkstra viết rằng ông định sử dụng từ ghép prolaag[3], viết tắt cho probeer te verlagen, nghĩa là "thử giảm",[4]
Trong ALGOL 68, nhân Linux,[5] và một số sách giáo khoa tiếng Anh, các thao tác P and V thường được gọi lần lượt là down và up. Trong thực hành, chúng thường được gọi là wait và signal, acquire và release (thư viên chuẩn của Java sử dụng cách này[6]), hoặc pend và post. Một vài cuốn sách sử dụng procure và vacate để phù hợp với viết tắt ban đầu bằng tiếng Hà Lan.
Đèn báo và mutex[sửa | sửa mã nguồn]
Mutex về căn bản giống như đèn báo nhị phân và đôi khi sử dụng cùng một cách cài đặt. Tuy nhiên khái niệm "mutex" thường được sử dụng để mô tả một cấu trúc ngăn cản hai tiến trình cũng thực hiện một đoạn mã hoặc truy cập một dữ liệu cùng lúc. Khái niệm đèn báo nhị phân thường mô tả cấu trúc dùng để hạn chế truy cập vào một tài nguyên.
Trong nhiều trường hợp một mutex có khái niệm "chủ": duy nhất tiến trình khoá mutex được quyền mở nó. Ngược lại đèn báo nói chung không đặt ra ràng buộc này, điều mà ví dụ người sản xuất - người tiêu dùng ở trên dựa vào.
Sử dụng[sửa | sửa mã nguồn]
Bản mẫu:Refimprove section Đèn báo được nhiều hệ điều hành cung cấp như là một mẫu đồng bộ hoá và được sử dụng ở nhiều nơi. Tuy nhiên xu hướng phát triển các ngôn ngữ lập trình là các cách đồng bộ hoá có cấu trúc hơn, như là monitor. Những sự trừu tượng hoá này thường chứa đèn báo hoặc mutex bên trong những không thể hiện giao diện của đèn báo ra đối với lập trình viên. Xu hướng này được khuyến khích mở những vấn đề nghiêm trọng và khó chuẩn đoán khi đèn báo bị sử dụng không đúng cách, một nguy cơ được giảm thiểu rất nhiều khi sự đồng bộ hoá được gắn chặt với tài nguyên mà nó điều khiển một cách tự động bởi ngôn ngữ thay vì bằng tay bởi người lập trình.
Xem thêm[sửa | sửa mã nguồn]
Ghi chú[sửa | sửa mã nguồn]
- ^ http://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD123.html E. W. Dijkstra, Cooperating sequential processes. Technological University, Eindhoven, The Netherlands, September 1965.
- ^ Silberschatz, Galvin & Gagne 2008, tr. 234
- ^ http://www.cs.utexas.edu/users/EWD/ewd00xx/EWD74.PDF
- ^ http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD51.html MULTIPROGAMMERING EN DE X8 from the E.W. Dijkstra Archive (in Dutch)
- ^ Kernel hacking howto on linuxgrill.com
- ^ Bản mẫu:Javadoc:SE
- Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2008), Operating System Concepts (ấn bản 8), John Wiley & Sons. Inc, ISBN 978-0-470-12872-5
Liên kết ngoài[sửa | sửa mã nguồn]
- Over Seinpalen (EWD 74), in which Dijkstra introduces the concept (in Dutch)
- semaphore.h programming interface - The Open Group Base Specifications Issue 6, IEEE Std 1003.1
- The Little Book of Semaphores, by Allen B. Downey
- A pragmatic, historically oriented survey on the universality of synchronization primitives, by Jouni Leppäjärvi

markdown:
# Đèn báo (lập trình)
|
|![]()
|
|Đây là một bài
Xin hãy tạo liên kết đến bài này trong các bài của các
(tháng 2 2013)
Trong khoa học máy tính,
**đèn báo** là một biến được bảo vệ hoặc một kiểu dữ liệu trừu tượng tạo ra sự trừu tượng hoá đơn giản nhưng hữu dụng để kiểm soát truy cập của nhiều tiến trình đến một tài nguyên chung trong môi trường lập trình song song.
Một cách nhìn về đèn báo là một bản ghi có bao nhiêu đơn vị của một tài nguyên có thể sử dụng, gắn với các tác vụ điều chỉnh bản ghi đó một cách an toàn (nghĩa là không tạo ra race condition) khi yêu cầu hoặc giải phóng các đơn vị và đợi đến khi một đơn vị rảnh rỗi nếu cần. Đèn báo là một công cụ hữu ích để chống race condition và khoá chết, tuy nhiên việc sử dụng nó không đảm bảo rằng chương trình không gặp phải các vấn đề trên. Đèn báo cho phép một số lượng tuỳ ý tài nguyên gọi là đèn báo đếm (counting semaphore) trong khi đèn báo bị giới hạn trong giá trị 0 và 1 được gọi là đèn báo nhị phân (binary semaphores).
Khái niệm đèn báo được phát minh bởi nhà nghiên cứu người Hà Lan
[Edsger Dijkstra](/wiki/Edsger_Dijkstra), and the concept has found widespread use in a variety of [1] [operating systems](/w/index.php?title=Operating_system&action=edit&redlink=1).
## Mục lục
## Ý nghĩa và cài đặt[
[sửa](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&veaction=edit&vesection=1) | [sửa mã nguồn](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit§ion=1)]
Đèn báo đếm được trang bị hai thao tác, kí hiệu là
**V** và **P**. Thao tác **V** tăng đèn báo **S** và thao tác **P** giảm nó. Ý nghĩa của chúng được giải thích bên dưới. Ngoặc vuông chỉ ra các thao tác nguyên tử, nghĩa là các thao tác không thể chia nhỏ dưới góc nhìn của các tiến trình khác.
functionV(semaphore S): Atomically increment S[S ← S + 1] functionP(semaphore S): repeat: Between repetitions of the loop other processes may operate on the semaphore[ ifS > 0: Atomically decrement S - note that S cannot become negativeS ← S - 1 break]
Giá trị của đèn báo
**S** là số đơn vị của tài nguyên còn rỗi. Thao tác P chờ đợi tích cực hoặc ngủ cho đến khi tài nguyên được bảo vệ trở nên rảnh rỗi, khi đó nó ngay lập tức yêu cầu. Thao tác **V** ngược lại: làm cho tài nguyên rảnh rỗi trở lại sau khi một tiến trình đã sử dụng xong.
## Ví dụ: Bài toán người sản xuất/người tiêu dùng[
[sửa](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&veaction=edit&vesection=2) | [sửa mã nguồn](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit§ion=2)]
Cho
emptyCount và
fullCount là các đèn báo đém, và
emptyCount được khởi tạo bằng N trong khi
fullCount bằng 0, người sản xuất thực hiện lặp lại công việc sau:
produce:P(emptyCount) putItemIntoQueue(item) V(fullCount)
Người sử dụng lặp đi lặp lại công việc sau:
consume:P(fullCount) item ← getItemFromQueue() V(emptyCount)
Lưu ý rằng thứ tự các phép toán là quan trọng. Ví dụ, nếu người sản xuất đặt hàng vào hàng đợi sau khi tăng fullCount, người sử dụng có thể cố lấy hàng trước khi nó được ghi. Nếu người sản xuất đặt hàng vào trước khi giảm emptyCount, nó có thể vượt quá giới hạn của hàng đợi.
## Nguồn gốc tên hàm[
[sửa](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&veaction=edit&vesection=3) | [sửa mã nguồn](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit§ion=3)]
Các tên chuẩn
**P** và **V** xuất phát từ chữ cái đầu của từ tiếng Hà Lan. **V** là viết tắt của *verhogen* ("tăng lên"). Có nhiều giải thích cho **P**, bao gồm *proberen* - "kiểm tra" , [2] *passeer*- "vượt qua", *probeer*- "thử", and *pakken*for "bắt". Tuy nhiên, Dijkstra viết rằng ông định sử dụng từ ghép *prolaag* , viết tắt cho [[3]](#cite_note-3) *probeer te verlagen*, nghĩa là "thử giảm", [[4]](#cite_note-4)
Trong
[ALGOL 68](/w/index.php?title=ALGOL_68&action=edit&redlink=1), nhân Linux, và một số sách giáo khoa tiếng Anh, các thao tác [5] **P**and **V**thường được gọi lần lượt là **down**và **up**. Trong thực hành, chúng thường được gọi là **wait**và **signal**, **acquire**và **release**(thư viên chuẩn của Java sử dụng cách này ), hoặc [[6]](#cite_note-6) **pend**và **post**. Một vài cuốn sách sử dụng **procure**và **vacate**để phù hợp với viết tắt ban đầu bằng tiếng Hà Lan.
## Đèn báo và mutex[
[sửa](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&veaction=edit&vesection=4) | [sửa mã nguồn](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit§ion=4)]
Mutex về căn bản giống như đèn báo nhị phân và đôi khi sử dụng cùng một cách cài đặt. Tuy nhiên khái niệm "mutex" thường được sử dụng để mô tả một cấu trúc ngăn cản hai tiến trình cũng thực hiện một đoạn mã hoặc truy cập một dữ liệu cùng lúc. Khái niệm đèn báo nhị phân thường mô tả cấu trúc dùng để hạn chế truy cập vào một tài nguyên.
Trong nhiều trường hợp một mutex có khái niệm "chủ": duy nhất tiến trình khoá mutex được quyền mở nó. Ngược lại đèn báo nói chung không đặt ra ràng buộc này, điều mà ví dụ người sản xuất - người tiêu dùng ở trên dựa vào.
## Sử dụng[
[sửa](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&veaction=edit&vesection=5) | [sửa mã nguồn](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit§ion=5)] [Bản mẫu:Refimprove section](/w/index.php?title=B%E1%BA%A3n_m%E1%BA%ABu:Refimprove_section&action=edit&redlink=1) Đèn báo được nhiều hệ điều hành cung cấp như là một mẫu đồng bộ hoá và được sử dụng ở nhiều nơi. Tuy nhiên xu hướng phát triển các ngôn ngữ lập trình là các cách đồng bộ hoá có cấu trúc hơn, như là monitor. Những sự trừu tượng hoá này thường chứa đèn báo hoặc mutex bên trong những không thể hiện giao diện của đèn báo ra đối với lập trình viên. Xu hướng này được khuyến khích mở những vấn đề nghiêm trọng và khó chuẩn đoán khi đèn báo bị sử dụng không đúng cách, một nguy cơ được giảm thiểu rất nhiều khi sự đồng bộ hoá được gắn chặt với tài nguyên mà nó điều khiển một cách tự động bởi ngôn ngữ thay vì bằng tay bởi người lập trình.
## Xem thêm[
[sửa](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&veaction=edit&vesection=6) | [sửa mã nguồn](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit§ion=6)]
## Ghi chú[
[sửa](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&veaction=edit&vesection=7) | [sửa mã nguồn](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit§ion=7)] [^](#cite_ref-1) [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD123.html](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD123.html)E. W. Dijkstra, Cooperating sequential processes. Technological University, Eindhoven, The Netherlands, September 1965. [^](#cite_ref-2) [Silberschatz, Galvin & Gagne 2008](#CITEREFSilberschatzGalvinGagne2008), tr. 234 [^](#cite_ref-3) [http://www.cs.utexas.edu/users/EWD/ewd00xx/EWD74.PDF](http://www.cs.utexas.edu/users/EWD/ewd00xx/EWD74.PDF) [^](#cite_ref-4) [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD51.html](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD51.html)MULTIPROGAMMERING EN DE X8 from the E.W. Dijkstra Archive (in [Dutch](/w/index.php?title=Dutch_language&action=edit&redlink=1)) [^](#cite_ref-5) [Kernel hacking howto on linuxgrill.com](http://www.linuxgrill.com/anonymous/fire/netfilter/kernel-hacking-HOWTO-5.html#ss5.3) [^](#cite_ref-6) [Bản mẫu:Javadoc:SE](/w/index.php?title=B%E1%BA%A3n_m%E1%BA%ABu:Javadoc:SE&action=edit&redlink=1)
- Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2008),
*Operating System Concepts*(ấn bản 8), John Wiley & Sons. Inc, [ISBN](/wiki/ISBN) [978-0-470-12872-5](/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Ngu%E1%BB%93n_s%C3%A1ch/978-0-470-12872-5)
## Liên kết ngoài[
[sửa](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&veaction=edit&vesection=8) | [sửa mã nguồn](/w/index.php?title=%C4%90%C3%A8n_b%C3%A1o_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit§ion=8)] [Over Seinpalen (EWD 74)](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD74.html), in which Dijkstra introduces the concept (in [Dutch](/w/index.php?title=Dutch_language&action=edit&redlink=1)) [semaphore.h](http://www.opengroup.org/onlinepubs/009695399/basedefs/semaphore.h.html)programming interface - The Open Group Base Specifications Issue 6, IEEE Std 1003.1 [, by Allen B. Downey](http://greenteapress.com/semaphores/) *The Little Book of Semaphores* [, by Jouni Leppäjärvi](http://www.oamk.fi/~joleppaj/personal/jleppaja_gradu_080511.pdf) *A pragmatic, historically oriented survey on the universality of synchronization primitives*

Server: Apache

Content-language: vi

Content-Type: text/html; charset=UTF-8

Vary: Accept-Encoding,Cookie,X-Use-HHVM

Via: 1.1 varnish, 1.1 varnish

X-Cache: cp1068 hit (1), cp1065 frontend miss (0)

Cache-Control: private, s-maxage=0, max-age=0, must-revalidate