chuyển đổi giữa các shell, dừng nhạc hiện đang phát


11

Trong khi tôi đang nghe nhạc, tôi đã thay đổi bảng điều khiển ảo bằng cách sử dụng Ctrl+ Alt+ F2và đột nhiên nhạc bị tạm dừng. Quay trở lại bảng điều khiển chạy máy chủ X Ctrl+ Alt+ F7hoặc đăng nhập vào người dùng trong bảng điều khiển mà tôi hiện đang sử dụng ( Ctrl+ Alt+ F2), bắt đầu phát lại nhạc.

Linux (tôi đang sử dụng Ubuntu) là một hệ điều hành nhiều người dùng. Theo tôi biết, nó có 7 bảng điều khiển ảo mà người dùng có thể đăng nhập và làm việc cùng một lúc. Vậy tại sao điều này xảy ra? Điều gì sẽ xảy ra nếu hệ thống của tôi đang cập nhật trong khi chuyển đổi bảng điều khiển?


4
Câu hỏi đúng được đặt ra là Điều gì sẽ xảy ra nếu tất cả những người dùng đó muốn phát nhạc?
JdeBP

Câu trả lời:


4

Linux có nhiều bảng điều khiển ảo. Ctrl+ Alt+ chuyển đổi giữa các bảng điều khiển. Khi bạn chuyển từ bàn điều khiển 7 sang bàn điều khiển 2, các thiết bị ngoại vi đầu vào và đầu ra được định tuyến lại từ bàn điều khiển 7 sang bàn điều khiển 2. Khi bàn điều khiển 7 không hoạt động, nó không có quyền truy cập vào các thiết bị ngoại vi đầu vào / đầu ra: màn hình không hiển thị trên màn hình, các ứng dụng không nhận được đầu vào bàn phím, v.v.Fn

Vì lý do lịch sử, đầu vào và đầu ra âm thanh sử dụng các kênh hoàn toàn khác nhau từ các thiết bị đầu vào như bàn phím và chuột và từ màn hình video. Các thiết bị bảng điều khiển (sự trừu tượng trong hệ điều hành) bao gồm bàn phím và video nhưng không có âm thanh. Việc triển khai cơ bản phổ biến nhất của âm thanh trên hệ thống Unix là độc lập với hệ thống đó và việc cho phép sử dụng các thiết bị ngoại vi âm thanh được cấp dựa trên tư cách thành viên nhóm thay vì quyền sở hữu bàn điều khiển. Đây thực tế là một thiếu sót trong thiết kế.

Ubuntu đã thiết lập mọi thứ để phiên đăng nhập vào bảng điều khiển và chỉ có chúng mới có quyền truy cập vào thiết bị âm thanh. Nếu bạn chuyển đổi bảng điều khiển, bạn sẽ mất quyền truy cập vào thiết bị âm thanh, trừ khi bạn cũng đăng nhập vào bảng điều khiển khác đó. Đây là những gì thực sự nên được thực hiện ngay từ đầu, nhưng không phải vì các nhà thiết kế giao diện điều khiển không nghĩ về âm thanh.

Khi bạn chuyển sang bảng điều khiển khác, các chương trình của bạn sẽ tiếp tục chạy, vì CPU không được liên kết với bảng điều khiển mà với máy: bất kỳ ai có tài khoản trên máy đều được phép sử dụng thời gian của CPU. Điều tương tự cũng xảy ra với các tài nguyên khác như bộ nhớ và tệp (có quyền). Nó chỉ tương tác với người dùng bị chi phối bởi quyền sở hữu bàn điều khiển. Âm thanh của bạn dừng phát khi bạn chuyển sang bảng điều khiển nơi bạn không đăng nhập vì các chương trình của bạn mất đặc quyền truy cập vào thiết bị phát âm thanh.

Tôi tin rằng Ubuntu thực hiện kiểm soát truy cập thông qua Polkit , nhưng tôi không biết chính xác cách thức hoạt động của nó.


Bạn có thể thử điều này. Phát nhạc và chuyển đổi VT. Sau một thời gian chuyển trở lại F7 VT. Bài hát bắt đầu từ chính xác điểm mà nó bị tạm dừng. Làm thế nào là điều này có thể nếu hệ thống không phải là chủ đề ngủ. Không cấp quyền truy cập vào âm thanh I / O không thể tạm dừng trình phát. Và tôi đã thử nó trong khi cài đặt một chương trình là tốt. thật ngạc nhiên, chương trình đã được cài đặt ngay cả khi tôi chuyển đổi VT.
DScript

1
@DScript Chuỗi trình phát bị chặn vì nó đang chờ hệ thống âm thanh. Một luồng không chờ hệ thống âm thanh tiếp tục chạy. Không cấp quyền truy cập vào I / O âm thanh sẽ chặn người chơi, bởi vì cách nó được thực hiện không phải là từ chối yêu cầu mà là chặn nó.
Gilles 'SO- ngừng trở nên xấu xa'

1

Một thời gian trước, mọi người đã sử dụng các thiết bị đầu cuối máy tính để nhập dữ liệu vào hoặc hiển thị dữ liệu từ máy tính lớn Unix. Nếu bất kỳ người dùng thiết bị đầu cuối nào này muốn, giả sử, cat /dev/zerođầu ra không được phát cho tất cả các thiết bị đầu cuối / người dùng được kết nối với cùng một máy tính lớn (đó là vì đó là một hệ thống nhiều người dùng và mỗi người dùng có thể chạy các tác vụ của mình mà không ảnh hưởng đến người dùng khác) .

Trong thời đại của chúng ta, chúng ta đang sử dụng các thiết bị đầu cuối ảo (hoặc bảng điều khiển ảo - VC) là mô phỏng phần mềm của thiết bị đầu cuối máy tính vật lý và hoạt động theo cách tương tự. Nếu bạn đã đăng nhập vào VC1 và chạy ls -alR /, đầu ra sẽ không được phát cho tất cả các VC và ngay cả khi bạn chuyển sang một VC khác, bạn lssẽ tiếp tục chạy trong VC1 và gửi đầu ra của nó tới VC1 (theo cách tương tự, cập nhật của bạn lệnh sẽ tiếp tục chạy trong VC bạn đã khởi động nó ngay cả khi bạn chuyển sang một VC khác).

Bây giờ, âm thanh hơi khác so với đầu ra tiêu chuẩn, vì (theo mặc định) nó sử dụng cùng một thiết bị cho đầu ra cho dù người dùng của bạn đã đăng nhập, nhưng người dùng của bạn phải đăng nhập để có quyền truy cập vào đầu ra của thiết bị âm thanh.

Bạn cũng có thể xem tại đây để biết thêm chi tiết về VC.


Bạn có thể thử điều này. Phát nhạc và chuyển đổi VT. Sau một thời gian chuyển trở lại F7 VT. Bài hát bắt đầu từ chính xác điểm mà nó bị tạm dừng. Làm thế nào là điều này có thể nếu hệ thống không phải là chủ đề ngủ. Không cấp quyền truy cập vào âm thanh I / O không thể tạm dừng trình phát. Và tôi đã thử nó trong khi cài đặt một chương trình là tốt. thật ngạc nhiên, chương trình đã được cài đặt ngay cả khi tôi chuyển đổi VT.
DScript

@DScript đó là vì trình phát bạn đang sử dụng được thiết kế để phát hiện chuyển sang một VC khác và tạm dừng. Theo mặc định, hệ thống sẽ không đẹp hoặc tạm dừng các quá trình khi chuyển sang một VC khác.
petry

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.